| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  | // @ts-check
 | 
					
						
							|  |  |  | const { devices } = require('@playwright/test'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @typedef ConfigOptions | 
					
						
							|  |  |  |  * @type {{ port: number; testDir: string; appDir: string }} | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @see https://playwright.dev/docs/test-configuration
 | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  |  * @type {(options: ConfigOptions) => import('@playwright/test').PlaywrightTestConfig} | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  | const createConfig = ({ port, testDir, appDir }) => ({ | 
					
						
							|  |  |  |   testDir, | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  |   expect: { | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Maximum time expect() should wait for the condition to be met. | 
					
						
							|  |  |  |      * For example in `await expect(locator).toHaveText();` | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     timeout: 5000, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   /* Run tests in files in parallel */ | 
					
						
							|  |  |  |   fullyParallel: false, | 
					
						
							|  |  |  |   /* Fail the build on CI if you accidentally left test.only in the source code. */ | 
					
						
							|  |  |  |   forbidOnly: !!process.env.CI, | 
					
						
							|  |  |  |   /* Retry on CI only */ | 
					
						
							|  |  |  |   retries: process.env.CI ? 2 : 0, | 
					
						
							|  |  |  |   /* Opt out of parallel tests on CI. */ | 
					
						
							|  |  |  |   workers: 1, | 
					
						
							|  |  |  |   /* Reporter to use. See https://playwright.dev/docs/test-reporters */ | 
					
						
							|  |  |  |   reporter: 'html', | 
					
						
							|  |  |  |   /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ | 
					
						
							|  |  |  |   use: { | 
					
						
							|  |  |  |     /* Base URL to use in actions like `await page.goto('/')`. */ | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  |     baseURL: `http://127.0.0.1:${port}`, | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  |     /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ | 
					
						
							|  |  |  |     actionTimeout: 0, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-09-28 11:47:43 +02:00
										 |  |  |     /* Collect trace when a test failed on the CI. See https://playwright.dev/docs/trace-viewer | 
					
						
							|  |  |  |        Until https://github.com/strapi/strapi/issues/18196 is fixed we can't enable this locally,
 | 
					
						
							|  |  |  |        because the Strapi server restarts every time a new file (trace) is created. | 
					
						
							|  |  |  |     */ | 
					
						
							|  |  |  |     trace: process.env.CI ? 'retain-on-failure' : 'off', | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Configure projects for major browsers */ | 
					
						
							|  |  |  |   projects: [ | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       name: 'chromium', | 
					
						
							|  |  |  |       use: { | 
					
						
							|  |  |  |         ...devices['Desktop Chrome'], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       name: 'firefox', | 
					
						
							|  |  |  |       use: { | 
					
						
							|  |  |  |         ...devices['Desktop Firefox'], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |       name: 'webkit', | 
					
						
							|  |  |  |       use: { | 
					
						
							|  |  |  |         ...devices['Desktop Safari'], | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   ], | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Folder for test artifacts such as screenshots, videos, traces, etc. */ | 
					
						
							|  |  |  |   outputDir: 'test-results/', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* Run your local dev server before starting the tests */ | 
					
						
							|  |  |  |   webServer: { | 
					
						
							| 
									
										
										
										
											2023-12-04 22:30:09 -08:00
										 |  |  |     command: `cd ${appDir} && npm run develop`, | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  |     url: `http://127.0.0.1:${port}`, | 
					
						
							| 
									
										
										
										
											2023-10-30 11:36:16 +00:00
										 |  |  |     timeout: 60 * 1000, | 
					
						
							| 
									
										
										
										
											2023-07-19 16:34:58 +01:00
										 |  |  |     reuseExistingServer: true, | 
					
						
							|  |  |  |     stdout: 'pipe', | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  | }); | 
					
						
							| 
									
										
										
										
											2022-10-28 09:35:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-13 11:37:46 +01:00
										 |  |  | module.exports = { createConfig }; |