mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-15 17:42:15 +08:00

Issue number: N/A --------- <!-- Please refer to our contributing documentation for any questions on submitting a pull request, or let us know here if you need any help: https://ionicframework.com/docs/building/contributing --> <!-- Some docs updates need to be made in the `ionic-docs` repo, in a separate PR. See https://github.com/ionic-team/ionic-framework/blob/main/.github/CONTRIBUTING.md#modifying-documentation for details. --> <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> This is the first PR to introduce the infrastructure required to add test generators to the Ionic Framework project. This PR introduces the file name changes necessary to support two playwright configs, so I recommend reviewing the PR by commit:1e5012cea1
- Created a `playwright.config-legacy.ts` file and updates `package.json`. - Running `npm run test.e2e` will run the generator tests, and running `npm run test.e2e.legacy` will run the legacy tests.4fe8de7df7
- Updates the GitHub Action scripts to run both the modern and legacy E2E tests. I added command modifiers to avoid collisions with output directories.e8bcfaf926
- Updates `*.e2e.ts` files to have the legacy format name: `*.e2e-legacy.ts`. This naming scheme is required for the two Playwright configs to pull in the correct files. When migrating tests to generators, team members will rename the file to remove the `-legacy` part.5bf196c36d
(warning: lots of files!) - Updates the `*.e2e.ts-snapshots` directories to have the legacy format name: `*.e2e-legacy.ts-snapshots`. The screenshot directory in Playwright is generated based on the test file name which is why we are updating the screenshot directory. When migrating tests to generators, team members will rename the directory to remove the `-legacy` part. ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. -->
91 lines
2.3 KiB
TypeScript
91 lines
2.3 KiB
TypeScript
import type { PlaywrightTestConfig, PlaywrightTestOptions, PlaywrightWorkerOptions, Project } from '@playwright/test';
|
|
import { devices, expect } from '@playwright/test';
|
|
|
|
import { matchers } from './src/utils/test/playwright';
|
|
|
|
expect.extend(matchers);
|
|
|
|
const projects: Project<PlaywrightTestOptions, PlaywrightWorkerOptions>[] = [
|
|
{
|
|
/**
|
|
* This is really just desktop Firefox
|
|
* but with a mobile viewport.
|
|
*/
|
|
name: 'Mobile Firefox',
|
|
use: {
|
|
browserName: 'firefox',
|
|
/**
|
|
* This is the Pixel 5 configuration.
|
|
* We can't use devices['Pixel 5']
|
|
* because the "isMobile" option is
|
|
* not supported on Firefox.
|
|
*/
|
|
viewport: {
|
|
width: 393,
|
|
height: 727
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: 'Mobile Chrome',
|
|
use: {
|
|
browserName: 'chromium',
|
|
...devices['Pixel 5']
|
|
}
|
|
},
|
|
{
|
|
name: 'Mobile Safari',
|
|
use: {
|
|
browserName: 'webkit',
|
|
...devices['iPhone 12']
|
|
}
|
|
}
|
|
];
|
|
|
|
/**
|
|
* See https://playwright.dev/docs/test-configuration.
|
|
*/
|
|
const config: PlaywrightTestConfig = {
|
|
testMatch: '*.e2e.ts',
|
|
expect: {
|
|
/**
|
|
* Maximum time expect() should wait for the condition to be met.
|
|
* For example in `await expect(locator).toHaveText();`
|
|
*/
|
|
timeout: 5000
|
|
},
|
|
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
|
forbidOnly: !!process.env.CI,
|
|
/* Fail fast on CI */
|
|
maxFailures: process.env.CI ? 1 : 0,
|
|
/* Flaky test should be either addressed or disabled until we can address them */
|
|
retries: 0,
|
|
/* Opt out of parallel tests on CI. */
|
|
workers: process.env.CI ? 1 : undefined,
|
|
/* 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: {
|
|
/* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
|
|
actionTimeout: 0,
|
|
/**
|
|
* All failed tests should create
|
|
* a trace file for easier debugging.
|
|
*
|
|
* See https://playwright.dev/docs/trace-viewer
|
|
*/
|
|
trace: 'retain-on-failure',
|
|
baseURL: 'http://localhost:3333',
|
|
},
|
|
|
|
/* Configure projects for major browsers */
|
|
projects,
|
|
webServer: {
|
|
command: 'serve -p 3333',
|
|
port: 3333,
|
|
reuseExistingServer: !process.env.CI
|
|
}
|
|
};
|
|
|
|
export default config;
|