docs(test): separate TestOptions from Fixtures (#9000)
This commit is contained in:
parent
63ff405e6e
commit
cb7285a8c0
|
|
@ -23,158 +23,42 @@ test('basic test', async ({ page }) => {
|
||||||
|
|
||||||
Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the test has finished. `page` fixture provides a [Page] object that is available to the test.
|
Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the test has finished. `page` fixture provides a [Page] object that is available to the test.
|
||||||
|
|
||||||
Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Many fixtures are designed as "options" that you can set in your [`property: TestConfig.use`] section.
|
Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Playwright Test also [provides options][TestOptions] to configure [`property: Fixtures.browser`], [`property: Fixtures.context`] and [`property: Fixtures.page`].
|
||||||
|
|
||||||
```js js-flavor=js
|
## property: Fixtures.browser
|
||||||
// @ts-check
|
- type: <[Browser]>
|
||||||
|
|
||||||
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
[Browser] instance is shared between all tests in the [same worker](./test-parallel.md) - this makes testing efficient. However, each test runs in an isolated [BrowserContext] and gets a fresh environment.
|
||||||
const config = {
|
|
||||||
use: {
|
|
||||||
headless: false,
|
|
||||||
viewport: { width: 1280, height: 720 },
|
|
||||||
ignoreHTTPSErrors: true,
|
|
||||||
video: 'on-first-retry',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = config;
|
Learn how to [configure browser](./test-configuration.md) and see [available options][TestOptions].
|
||||||
```
|
|
||||||
|
|
||||||
```js js-flavor=ts
|
|
||||||
import { PlaywrightTestConfig } from '@playwright/test';
|
|
||||||
const config: PlaywrightTestConfig = {
|
|
||||||
use: {
|
|
||||||
headless: false,
|
|
||||||
viewport: { width: 1280, height: 720 },
|
|
||||||
ignoreHTTPSErrors: true,
|
|
||||||
video: 'on-first-retry',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
export default config;
|
|
||||||
```
|
|
||||||
|
|
||||||
Alternatively, with [`method: Test.use`] you can override some options for a file.
|
|
||||||
|
|
||||||
```js js-flavor=js
|
|
||||||
// example.spec.js
|
|
||||||
const { test, expect } = require('@playwright/test');
|
|
||||||
|
|
||||||
// Run tests in this file with portrait-like viewport.
|
|
||||||
test.use({ viewport: { width: 600, height: 900 } });
|
|
||||||
|
|
||||||
test('my portrait test', async ({ page }) => {
|
|
||||||
// ...
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
```js js-flavor=ts
|
|
||||||
// example.spec.ts
|
|
||||||
import { test, expect } from '@playwright/test';
|
|
||||||
|
|
||||||
// Run tests in this file with portrait-like viewport.
|
|
||||||
test.use({ viewport: { width: 600, height: 900 } });
|
|
||||||
|
|
||||||
test('my portrait test', async ({ page }) => {
|
|
||||||
// ...
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
## property: Fixtures.acceptDownloads = %%-context-option-acceptdownloads-%%
|
|
||||||
|
|
||||||
## property: Fixtures.baseURL = %%-context-option-baseURL-%%
|
|
||||||
|
|
||||||
## property: Fixtures.browserName
|
## property: Fixtures.browserName
|
||||||
- type: <[BrowserName]<"chromium"|"firefox"|"webkit">>
|
- type: <[BrowserName]<"chromium"|"firefox"|"webkit">>
|
||||||
|
|
||||||
Name of the browser that runs tests. Defaults to `'chromium'`. Most of the time you should set `browserName` in your [TestConfig]:
|
Name of the browser that runs tests. Defaults to `'chromium'`. Useful to [annotate tests](./test-annotations.md) based on the browser.
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
// playwright.config.js
|
test('skip this test in Firefox', async ({ page, browserName }) => {
|
||||||
// @ts-check
|
test.skip(browserName === 'firefox', 'Still working on it');
|
||||||
|
// ...
|
||||||
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
});
|
||||||
const config = {
|
|
||||||
use: {
|
|
||||||
browserName: 'firefox',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports = config;
|
|
||||||
```
|
```
|
||||||
|
|
||||||
```js js-flavor=ts
|
```js js-flavor=ts
|
||||||
// playwright.config.ts
|
test('skip this test in Firefox', async ({ page, browserName }) => {
|
||||||
import { PlaywrightTestConfig, devices } from '@playwright/test';
|
test.skip(browserName === 'firefox', 'Still working on it');
|
||||||
|
// ...
|
||||||
const config: PlaywrightTestConfig = {
|
});
|
||||||
use: {
|
|
||||||
browserName: 'firefox',
|
|
||||||
},
|
|
||||||
};
|
|
||||||
export default config;
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## property: Fixtures.actionTimeout
|
|
||||||
- type: <[int]>
|
|
||||||
|
|
||||||
Default timeout for each Playwright action in milliseconds, defaults to 0 (no timeout).
|
|
||||||
|
|
||||||
This is a default timeout for all Playwright actions, same as configured via [`method: Page.setDefaultTimeout`].
|
|
||||||
|
|
||||||
## property: Fixtures.bypassCSP = %%-context-option-bypasscsp-%%
|
|
||||||
|
|
||||||
## property: Fixtures.channel = %%-browser-option-channel-%%
|
|
||||||
|
|
||||||
## property: Fixtures.colorScheme = %%-context-option-colorscheme-%%
|
|
||||||
|
|
||||||
## property: Fixtures.context
|
## property: Fixtures.context
|
||||||
- type: <[BrowserContext]>
|
- type: <[BrowserContext]>
|
||||||
|
|
||||||
Isolated [BrowserContext] instance, created for each test. Since contexts are isolated between each other, every test gets a fresh environment, even when multiple tests run in a single [Browser] for maximum efficiency.
|
Isolated [BrowserContext] instance, created for each test. Since contexts are isolated between each other, every test gets a fresh environment, even when multiple tests run in a single [Browser] for maximum efficiency.
|
||||||
|
|
||||||
Learn how to [configure context](./test-configuration.md) through other fixtures and options.
|
Learn how to [configure context](./test-configuration.md) and see [available options][TestOptions].
|
||||||
|
|
||||||
The [`property: Fixtures.page`] belongs to this context.
|
Default [`property: Fixtures.page`] belongs to this context.
|
||||||
|
|
||||||
## property: Fixtures.contextOptions
|
|
||||||
- type: <[Object]>
|
|
||||||
|
|
||||||
Options used to create the context, as passed to [`method: Browser.newContext`]. Specific options like [`property: Fixtures.viewport`] take priority over this.
|
|
||||||
|
|
||||||
## property: Fixtures.deviceScaleFactor = %%-context-option-devicescalefactor-%%
|
|
||||||
|
|
||||||
## property: Fixtures.extraHTTPHeaders = %%-context-option-extrahttpheaders-%%
|
|
||||||
|
|
||||||
## property: Fixtures.geolocation = %%-context-option-geolocation-%%
|
|
||||||
|
|
||||||
## property: Fixtures.hasTouch = %%-context-option-hastouch-%%
|
|
||||||
|
|
||||||
## property: Fixtures.headless = %%-browser-option-headless-%%
|
|
||||||
|
|
||||||
## property: Fixtures.httpCredentials = %%-context-option-httpcredentials-%%
|
|
||||||
|
|
||||||
## property: Fixtures.ignoreHTTPSErrors = %%-context-option-ignorehttpserrors-%%
|
|
||||||
|
|
||||||
## property: Fixtures.isMobile = %%-context-option-ismobile-%%
|
|
||||||
|
|
||||||
## property: Fixtures.javaScriptEnabled = %%-context-option-javascriptenabled-%%
|
|
||||||
|
|
||||||
## property: Fixtures.launchOptions
|
|
||||||
- type: <[Object]>
|
|
||||||
|
|
||||||
Options used to launch the browser, as passed to [`method: BrowserType.launch`]. Specific options [`property: Fixtures.headless`] and [`property: Fixtures.channel`] take priority over this.
|
|
||||||
|
|
||||||
## property: Fixtures.locale = %%-context-option-locale-%%
|
|
||||||
|
|
||||||
## property: Fixtures.navigationTimeout
|
|
||||||
- type: <[int]>
|
|
||||||
|
|
||||||
Timeout for each navigation action in milliseconds. Defaults to 0 (no timeout).
|
|
||||||
|
|
||||||
This is a default navigation timeout, same as configured via [`method: Page.setDefaultNavigationTimeout`].
|
|
||||||
|
|
||||||
## property: Fixtures.offline = %%-context-option-offline-%%
|
|
||||||
|
|
||||||
## property: Fixtures.page
|
## property: Fixtures.page
|
||||||
- type: <[Page]>
|
- type: <[Page]>
|
||||||
|
|
@ -206,52 +90,3 @@ test('basic test', async ({ page }) => {
|
||||||
// ...
|
// ...
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## property: Fixtures.permissions = %%-context-option-permissions-%%
|
|
||||||
|
|
||||||
## property: Fixtures.proxy = %%-browser-option-proxy-%%
|
|
||||||
|
|
||||||
## property: Fixtures.screenshot
|
|
||||||
- type: <[Screenshot]<"off"|"on"|"only-on-failure">>
|
|
||||||
|
|
||||||
Whether to automatically capture a screenshot after each test. Defaults to `'off'`.
|
|
||||||
* `'off'`: Do not capture screenshots.
|
|
||||||
* `'on'`: Capture screenshot after each test.
|
|
||||||
* `'only-on-failure'`: Capture screenshot after each test failure.
|
|
||||||
|
|
||||||
Learn more about [automatic screenshots](./test-configuration.md#automatic-screenshots).
|
|
||||||
|
|
||||||
## property: Fixtures.storageState = %%-js-python-context-option-storage-state-%%
|
|
||||||
|
|
||||||
## property: Fixtures.timezoneId = %%-context-option-timezoneid-%%
|
|
||||||
|
|
||||||
## property: Fixtures.trace
|
|
||||||
- type: <[Screenshot]<"off"|"on"|"retain-on-failure"|"on-first-retry">>
|
|
||||||
|
|
||||||
Whether to record a trace for each test. Defaults to `'off'`.
|
|
||||||
* `'off'`: Do not record a trace.
|
|
||||||
* `'on'`: Record a trace for each test.
|
|
||||||
* `'retain-on-failure'`: Record a trace for each test, but remove it from successful test runs.
|
|
||||||
* `'on-first-retry'`: Record a trace only when retrying a test for the first time.
|
|
||||||
|
|
||||||
Learn more about [recording trace](./test-configuration.md#record-test-trace).
|
|
||||||
|
|
||||||
## property: Fixtures.userAgent = %%-context-option-useragent-%%
|
|
||||||
|
|
||||||
## property: Fixtures.video
|
|
||||||
- type: <[Object]|[VideoMode]<"off"|"on"|"retain-on-failure"|"on-first-retry">>
|
|
||||||
- `mode` <[VideoMode]<"off"|"on"|"retain-on-failure"|"on-first-retry">> Video recording mode.
|
|
||||||
- `size` <[Object]> Size of the recorded video.
|
|
||||||
- `width` <[int]>
|
|
||||||
- `height` <[int]>
|
|
||||||
|
|
||||||
Whether to record video for each test. Defaults to `'off'`.
|
|
||||||
* `'off'`: Do not record video.
|
|
||||||
* `'on'`: Record video for each test.
|
|
||||||
* `'retain-on-failure'`: Record video for each test, but remove all videos from successful test runs.
|
|
||||||
* `'on-first-retry'`: Record video only when retrying a test for the first time.
|
|
||||||
|
|
||||||
Learn more about [recording video](./test-configuration.md#record-video).
|
|
||||||
|
|
||||||
## property: Fixtures.viewport = %%-context-option-viewport-%%
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -974,7 +974,7 @@ Step body.
|
||||||
|
|
||||||
## method: Test.use
|
## method: Test.use
|
||||||
|
|
||||||
Specifies parameters or fixtures to use in a single test file or a [`method: Test.describe`] group. Most useful to configure a fixture, for example set `locale` to configure `context` fixture.
|
Specifies options or fixtures to use in a single test file or a [`method: Test.describe`] group. Most useful to set an option, for example set `locale` to configure `context` fixture.
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
const { test, expect } = require('@playwright/test');
|
const { test, expect } = require('@playwright/test');
|
||||||
|
|
@ -996,7 +996,7 @@ test('test with locale', async ({ page }) => {
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
It is possible not only to provide a fixture value, but also to override a fixture by providing a fixture function.
|
It is also possible to override a fixture by providing a function.
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
const { test, expect } = require('@playwright/test');
|
const { test, expect } = require('@playwright/test');
|
||||||
|
|
@ -1031,8 +1031,8 @@ test('test with locale', async ({ page }) => {
|
||||||
```
|
```
|
||||||
|
|
||||||
### param: Test.use.fixtures
|
### param: Test.use.fixtures
|
||||||
- `fixtures` <[Fixtures]>
|
- `options` <[TestOptions]>
|
||||||
|
|
||||||
An object with fixture definitions.
|
An object with local options.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -267,9 +267,9 @@ Whether to update expected snapshots with the actual results produced by the tes
|
||||||
Learn more about [snapshots](./test-snapshots.md).
|
Learn more about [snapshots](./test-snapshots.md).
|
||||||
|
|
||||||
## property: TestConfig.use
|
## property: TestConfig.use
|
||||||
- type: <[Fixtures]>
|
- type: <[TestOptions]>
|
||||||
|
|
||||||
Additional fixtures for this project. Most useful for specifying options, for example [`property: Fixtures.browserName`]. Learn more about [Fixtures] and [configuration](./test-configuration.md).
|
Global options for all tests, for example [`property: TestOptions.browserName`]. Learn more about [configuration](./test-configuration.md) and see [available options][TestOptions].
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
// playwright.config.js
|
// playwright.config.js
|
||||||
|
|
|
||||||
197
docs/src/test-api/class-testoptions.md
Normal file
197
docs/src/test-api/class-testoptions.md
Normal file
|
|
@ -0,0 +1,197 @@
|
||||||
|
# class: TestOptions
|
||||||
|
* langs: js
|
||||||
|
|
||||||
|
Playwright Test provides many options to configure test environment, [Browser], [BrowserContext] and more.
|
||||||
|
|
||||||
|
These options are usually provided in the [configuration file](./test-configuration.md) through [`property: TestConfig.use`] and [`property: TestProject.use`].
|
||||||
|
|
||||||
|
```js js-flavor=js
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
||||||
|
const config = {
|
||||||
|
use: {
|
||||||
|
headless: false,
|
||||||
|
viewport: { width: 1280, height: 720 },
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
video: 'on-first-retry',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = config;
|
||||||
|
```
|
||||||
|
|
||||||
|
```js js-flavor=ts
|
||||||
|
import { PlaywrightTestConfig } from '@playwright/test';
|
||||||
|
const config: PlaywrightTestConfig = {
|
||||||
|
use: {
|
||||||
|
headless: false,
|
||||||
|
viewport: { width: 1280, height: 720 },
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
video: 'on-first-retry',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
export default config;
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, with [`method: Test.use`] you can override some options for a file.
|
||||||
|
|
||||||
|
```js js-flavor=js
|
||||||
|
// example.spec.js
|
||||||
|
const { test, expect } = require('@playwright/test');
|
||||||
|
|
||||||
|
// Run tests in this file with portrait-like viewport.
|
||||||
|
test.use({ viewport: { width: 600, height: 900 } });
|
||||||
|
|
||||||
|
test('my portrait test', async ({ page }) => {
|
||||||
|
// ...
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
```js js-flavor=ts
|
||||||
|
// example.spec.ts
|
||||||
|
import { test, expect } from '@playwright/test';
|
||||||
|
|
||||||
|
// Run tests in this file with portrait-like viewport.
|
||||||
|
test.use({ viewport: { width: 600, height: 900 } });
|
||||||
|
|
||||||
|
test('my portrait test', async ({ page }) => {
|
||||||
|
// ...
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
## property: TestOptions.acceptDownloads = %%-context-option-acceptdownloads-%%
|
||||||
|
|
||||||
|
## property: TestOptions.baseURL = %%-context-option-baseURL-%%
|
||||||
|
|
||||||
|
## property: TestOptions.browserName
|
||||||
|
- type: <[BrowserName]<"chromium"|"firefox"|"webkit">>
|
||||||
|
|
||||||
|
Name of the browser that runs tests. Defaults to `'chromium'`. Most of the time you should set `browserName` in your [TestConfig]:
|
||||||
|
|
||||||
|
```js js-flavor=js
|
||||||
|
// playwright.config.js
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
/** @type {import('@playwright/test').PlaywrightTestConfig} */
|
||||||
|
const config = {
|
||||||
|
use: {
|
||||||
|
browserName: 'firefox',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = config;
|
||||||
|
```
|
||||||
|
|
||||||
|
```js js-flavor=ts
|
||||||
|
// playwright.config.ts
|
||||||
|
import { PlaywrightTestConfig, devices } from '@playwright/test';
|
||||||
|
|
||||||
|
const config: PlaywrightTestConfig = {
|
||||||
|
use: {
|
||||||
|
browserName: 'firefox',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
export default config;
|
||||||
|
```
|
||||||
|
|
||||||
|
## property: TestOptions.actionTimeout
|
||||||
|
- type: <[int]>
|
||||||
|
|
||||||
|
Default timeout for each Playwright action in milliseconds, defaults to 0 (no timeout).
|
||||||
|
|
||||||
|
This is a default timeout for all Playwright actions, same as configured via [`method: Page.setDefaultTimeout`].
|
||||||
|
|
||||||
|
## property: TestOptions.bypassCSP = %%-context-option-bypasscsp-%%
|
||||||
|
|
||||||
|
## property: TestOptions.channel = %%-browser-option-channel-%%
|
||||||
|
|
||||||
|
## property: TestOptions.colorScheme = %%-context-option-colorscheme-%%
|
||||||
|
|
||||||
|
## property: TestOptions.contextOptions
|
||||||
|
- type: <[Object]>
|
||||||
|
|
||||||
|
Options used to create the context, as passed to [`method: Browser.newContext`]. Specific options like [`property: TestOptions.viewport`] take priority over this.
|
||||||
|
|
||||||
|
## property: TestOptions.deviceScaleFactor = %%-context-option-devicescalefactor-%%
|
||||||
|
|
||||||
|
## property: TestOptions.extraHTTPHeaders = %%-context-option-extrahttpheaders-%%
|
||||||
|
|
||||||
|
## property: TestOptions.geolocation = %%-context-option-geolocation-%%
|
||||||
|
|
||||||
|
## property: TestOptions.hasTouch = %%-context-option-hastouch-%%
|
||||||
|
|
||||||
|
## property: TestOptions.headless = %%-browser-option-headless-%%
|
||||||
|
|
||||||
|
## property: TestOptions.httpCredentials = %%-context-option-httpcredentials-%%
|
||||||
|
|
||||||
|
## property: TestOptions.ignoreHTTPSErrors = %%-context-option-ignorehttpserrors-%%
|
||||||
|
|
||||||
|
## property: TestOptions.isMobile = %%-context-option-ismobile-%%
|
||||||
|
|
||||||
|
## property: TestOptions.javaScriptEnabled = %%-context-option-javascriptenabled-%%
|
||||||
|
|
||||||
|
## property: TestOptions.launchOptions
|
||||||
|
- type: <[Object]>
|
||||||
|
|
||||||
|
Options used to launch the browser, as passed to [`method: BrowserType.launch`]. Specific options [`property: TestOptions.headless`] and [`property: TestOptions.channel`] take priority over this.
|
||||||
|
|
||||||
|
## property: TestOptions.locale = %%-context-option-locale-%%
|
||||||
|
|
||||||
|
## property: TestOptions.navigationTimeout
|
||||||
|
- type: <[int]>
|
||||||
|
|
||||||
|
Timeout for each navigation action in milliseconds. Defaults to 0 (no timeout).
|
||||||
|
|
||||||
|
This is a default navigation timeout, same as configured via [`method: Page.setDefaultNavigationTimeout`].
|
||||||
|
|
||||||
|
## property: TestOptions.offline = %%-context-option-offline-%%
|
||||||
|
|
||||||
|
## property: TestOptions.permissions = %%-context-option-permissions-%%
|
||||||
|
|
||||||
|
## property: TestOptions.proxy = %%-browser-option-proxy-%%
|
||||||
|
|
||||||
|
## property: TestOptions.screenshot
|
||||||
|
- type: <[Screenshot]<"off"|"on"|"only-on-failure">>
|
||||||
|
|
||||||
|
Whether to automatically capture a screenshot after each test. Defaults to `'off'`.
|
||||||
|
* `'off'`: Do not capture screenshots.
|
||||||
|
* `'on'`: Capture screenshot after each test.
|
||||||
|
* `'only-on-failure'`: Capture screenshot after each test failure.
|
||||||
|
|
||||||
|
Learn more about [automatic screenshots](./test-configuration.md#automatic-screenshots).
|
||||||
|
|
||||||
|
## property: TestOptions.storageState = %%-js-python-context-option-storage-state-%%
|
||||||
|
|
||||||
|
## property: TestOptions.timezoneId = %%-context-option-timezoneid-%%
|
||||||
|
|
||||||
|
## property: TestOptions.trace
|
||||||
|
- type: <[Screenshot]<"off"|"on"|"retain-on-failure"|"on-first-retry">>
|
||||||
|
|
||||||
|
Whether to record a trace for each test. Defaults to `'off'`.
|
||||||
|
* `'off'`: Do not record a trace.
|
||||||
|
* `'on'`: Record a trace for each test.
|
||||||
|
* `'retain-on-failure'`: Record a trace for each test, but remove it from successful test runs.
|
||||||
|
* `'on-first-retry'`: Record a trace only when retrying a test for the first time.
|
||||||
|
|
||||||
|
Learn more about [recording trace](./test-configuration.md#record-test-trace).
|
||||||
|
|
||||||
|
## property: TestOptions.userAgent = %%-context-option-useragent-%%
|
||||||
|
|
||||||
|
## property: TestOptions.video
|
||||||
|
- type: <[Object]|[VideoMode]<"off"|"on"|"retain-on-failure"|"on-first-retry">>
|
||||||
|
- `mode` <[VideoMode]<"off"|"on"|"retain-on-failure"|"on-first-retry">> Video recording mode.
|
||||||
|
- `size` <[Object]> Size of the recorded video.
|
||||||
|
- `width` <[int]>
|
||||||
|
- `height` <[int]>
|
||||||
|
|
||||||
|
Whether to record video for each test. Defaults to `'off'`.
|
||||||
|
* `'off'`: Do not record video.
|
||||||
|
* `'on'`: Record video for each test.
|
||||||
|
* `'retain-on-failure'`: Record video for each test, but remove all videos from successful test runs.
|
||||||
|
* `'on-first-retry'`: Record video only when retrying a test for the first time.
|
||||||
|
|
||||||
|
Learn more about [recording video](./test-configuration.md#record-video).
|
||||||
|
|
||||||
|
## property: TestOptions.viewport = %%-context-option-viewport-%%
|
||||||
|
|
||||||
|
|
@ -277,7 +277,7 @@ This is a base timeout for all tests. In addition, each test can configure its o
|
||||||
## property: TestProject.use
|
## property: TestProject.use
|
||||||
- type: <[Fixtures]>
|
- type: <[Fixtures]>
|
||||||
|
|
||||||
Additional fixtures for this project. Most useful for specifying options, for example [`property: Fixtures.browserName`]. Learn more about [Fixtures] and [configuration](./test-configuration.md).
|
Options for all tests in this project, for example [`property: TestOptions.browserName`]. Learn more about [configuration](./test-configuration.md) and see [available options][TestOptions].
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
// playwright.config.js
|
// playwright.config.js
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,13 @@ Finally, there are plenty of testing options like `timeout` or `testDir` that co
|
||||||
|
|
||||||
You can specify any options globally in the configuration file, and most of them locally in a test file.
|
You can specify any options globally in the configuration file, and most of them locally in a test file.
|
||||||
|
|
||||||
|
See the full list of [test options][TestOptions] and all [configuration properties][TestConfig].
|
||||||
|
|
||||||
<!-- TOC -->
|
<!-- TOC -->
|
||||||
|
|
||||||
## Global configuration
|
## Global configuration
|
||||||
|
|
||||||
Create `playwright.config.js` (or `playwright.config.ts`) and specify options in the `use` section.
|
Create `playwright.config.js` (or `playwright.config.ts`) and specify options in the [`property: TestConfig.use`] section.
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
@ -58,7 +60,7 @@ npx playwright test --config=tests/my.config.js
|
||||||
|
|
||||||
## Local configuration
|
## Local configuration
|
||||||
|
|
||||||
With `test.use()` you can override some options for a file or a `test.describe` block.
|
With [`method: Test.use`] you can override some options for a file or a [`method: Test.describe`] block.
|
||||||
|
|
||||||
```js js-flavor=js
|
```js js-flavor=js
|
||||||
// example.spec.js
|
// example.spec.js
|
||||||
|
|
|
||||||
166
types/test.d.ts
vendored
166
types/test.d.ts
vendored
|
|
@ -284,9 +284,9 @@ interface TestProject {
|
||||||
export interface Project<TestArgs = {}, WorkerArgs = {}> extends TestProject {
|
export interface Project<TestArgs = {}, WorkerArgs = {}> extends TestProject {
|
||||||
define?: FixtureDefine | FixtureDefine[];
|
define?: FixtureDefine | FixtureDefine[];
|
||||||
/**
|
/**
|
||||||
* Additional fixtures for this project. Most useful for specifying options, for example
|
* Options for all tests in this project, for example
|
||||||
* [fixtures.browserName](https://playwright.dev/docs/api/class-fixtures#fixtures-browser-name). Learn more about
|
* [testOptions.browserName](https://playwright.dev/docs/api/class-testoptions#test-options-browser-name). Learn more about
|
||||||
* [Fixtures] and [configuration](https://playwright.dev/docs/test-configuration).
|
* [configuration](https://playwright.dev/docs/test-configuration) and see [available options][TestOptions].
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* // playwright.config.ts
|
* // playwright.config.ts
|
||||||
|
|
@ -595,9 +595,9 @@ export interface Config<TestArgs = {}, WorkerArgs = {}> extends TestConfig {
|
||||||
projects?: Project<TestArgs, WorkerArgs>[];
|
projects?: Project<TestArgs, WorkerArgs>[];
|
||||||
define?: FixtureDefine | FixtureDefine[];
|
define?: FixtureDefine | FixtureDefine[];
|
||||||
/**
|
/**
|
||||||
* Additional fixtures for this project. Most useful for specifying options, for example
|
* Global options for all tests, for example
|
||||||
* [fixtures.browserName](https://playwright.dev/docs/api/class-fixtures#fixtures-browser-name). Learn more about
|
* [testOptions.browserName](https://playwright.dev/docs/api/class-testoptions#test-options-browser-name). Learn more about
|
||||||
* [Fixtures] and [configuration](https://playwright.dev/docs/test-configuration).
|
* [configuration](https://playwright.dev/docs/test-configuration) and see [available options][TestOptions].
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* // playwright.config.ts
|
* // playwright.config.ts
|
||||||
|
|
@ -2218,9 +2218,9 @@ export interface TestType<TestArgs extends KeyValue, WorkerArgs extends KeyValue
|
||||||
*/
|
*/
|
||||||
afterAll(inner: (args: TestArgs & WorkerArgs, testInfo: TestInfo) => Promise<any> | any): void;
|
afterAll(inner: (args: TestArgs & WorkerArgs, testInfo: TestInfo) => Promise<any> | any): void;
|
||||||
/**
|
/**
|
||||||
* Specifies parameters or fixtures to use in a single test file or a
|
* Specifies options or fixtures to use in a single test file or a
|
||||||
* [test.describe(title, callback)](https://playwright.dev/docs/api/class-test#test-describe) group. Most useful to
|
* [test.describe(title, callback)](https://playwright.dev/docs/api/class-test#test-describe) group. Most useful to set an
|
||||||
* configure a fixture, for example set `locale` to configure `context` fixture.
|
* option, for example set `locale` to configure `context` fixture.
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* import { test, expect } from '@playwright/test';
|
* import { test, expect } from '@playwright/test';
|
||||||
|
|
@ -2232,7 +2232,7 @@ export interface TestType<TestArgs extends KeyValue, WorkerArgs extends KeyValue
|
||||||
* });
|
* });
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* It is possible not only to provide a fixture value, but also to override a fixture by providing a fixture function.
|
* It is also possible to override a fixture by providing a function.
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* import { test, expect } from '@playwright/test';
|
* import { test, expect } from '@playwright/test';
|
||||||
|
|
@ -2250,7 +2250,7 @@ export interface TestType<TestArgs extends KeyValue, WorkerArgs extends KeyValue
|
||||||
* });
|
* });
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* @param fixtures An object with fixture definitions.
|
* @param options An object with local options.
|
||||||
*/
|
*/
|
||||||
use(fixtures: Fixtures<{}, {}, TestArgs, WorkerArgs>): void;
|
use(fixtures: Fixtures<{}, {}, TestArgs, WorkerArgs>): void;
|
||||||
/**
|
/**
|
||||||
|
|
@ -2302,27 +2302,11 @@ type Proxy = Exclude<BrowserContextOptions['proxy'], undefined>;
|
||||||
type StorageState = Exclude<BrowserContextOptions['storageState'], undefined>;
|
type StorageState = Exclude<BrowserContextOptions['storageState'], undefined>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Playwright Test is based on the concept of the [test fixtures](https://playwright.dev/docs/test-fixtures). Test fixtures are used to establish
|
* Playwright Test provides many options to configure test environment, [Browser], [BrowserContext] and more.
|
||||||
* environment for each test, giving the test everything it needs and nothing else.
|
|
||||||
*
|
*
|
||||||
* Playwright Test looks at each test declaration, analyses the set of fixtures the test needs and prepares those fixtures
|
* These options are usually provided in the [configuration file](https://playwright.dev/docs/test-configuration) through
|
||||||
* specifically for the test. Values prepared by the fixtures are merged into a single object that is available to the
|
* [testConfig.use](https://playwright.dev/docs/api/class-testconfig#test-config-use) and
|
||||||
* `test`, hooks, annotations and other fixtures as a first parameter.
|
* [testProject.use](https://playwright.dev/docs/api/class-testproject#test-project-use).
|
||||||
*
|
|
||||||
* ```ts
|
|
||||||
* import { test, expect } from '@playwright/test';
|
|
||||||
*
|
|
||||||
* test('basic test', async ({ page }) => {
|
|
||||||
* // ...
|
|
||||||
* });
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the
|
|
||||||
* test has finished. `page` fixture provides a [Page] object that is available to the test.
|
|
||||||
*
|
|
||||||
* Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Many fixtures are
|
|
||||||
* designed as "options" that you can set in your
|
|
||||||
* [testConfig.use](https://playwright.dev/docs/api/class-testconfig#test-config-use) section.
|
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* import { PlaywrightTestConfig } from '@playwright/test';
|
* import { PlaywrightTestConfig } from '@playwright/test';
|
||||||
|
|
@ -2337,7 +2321,7 @@ type StorageState = Exclude<BrowserContextOptions['storageState'], undefined>;
|
||||||
* export default config;
|
* export default config;
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* Alternatively, with [test.use(fixtures)](https://playwright.dev/docs/api/class-test#test-use) you can override some
|
* Alternatively, with [test.use(options)](https://playwright.dev/docs/api/class-test#test-use) you can override some
|
||||||
* options for a file.
|
* options for a file.
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
|
|
@ -2389,8 +2373,8 @@ export interface PlaywrightWorkerOptions {
|
||||||
/**
|
/**
|
||||||
* Options used to launch the browser, as passed to
|
* Options used to launch the browser, as passed to
|
||||||
* [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch). Specific options
|
* [browserType.launch([options])](https://playwright.dev/docs/api/class-browsertype#browser-type-launch). Specific options
|
||||||
* [fixtures.headless](https://playwright.dev/docs/api/class-fixtures#fixtures-headless) and
|
* [testOptions.headless](https://playwright.dev/docs/api/class-testoptions#test-options-headless) and
|
||||||
* [fixtures.channel](https://playwright.dev/docs/api/class-fixtures#fixtures-channel) take priority over this.
|
* [testOptions.channel](https://playwright.dev/docs/api/class-testoptions#test-options-channel) take priority over this.
|
||||||
*/
|
*/
|
||||||
launchOptions: LaunchOptions;
|
launchOptions: LaunchOptions;
|
||||||
/**
|
/**
|
||||||
|
|
@ -2427,27 +2411,11 @@ export interface PlaywrightWorkerOptions {
|
||||||
export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' | /** deprecated */ 'retry-with-video';
|
export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' | /** deprecated */ 'retry-with-video';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Playwright Test is based on the concept of the [test fixtures](https://playwright.dev/docs/test-fixtures). Test fixtures are used to establish
|
* Playwright Test provides many options to configure test environment, [Browser], [BrowserContext] and more.
|
||||||
* environment for each test, giving the test everything it needs and nothing else.
|
|
||||||
*
|
*
|
||||||
* Playwright Test looks at each test declaration, analyses the set of fixtures the test needs and prepares those fixtures
|
* These options are usually provided in the [configuration file](https://playwright.dev/docs/test-configuration) through
|
||||||
* specifically for the test. Values prepared by the fixtures are merged into a single object that is available to the
|
* [testConfig.use](https://playwright.dev/docs/api/class-testconfig#test-config-use) and
|
||||||
* `test`, hooks, annotations and other fixtures as a first parameter.
|
* [testProject.use](https://playwright.dev/docs/api/class-testproject#test-project-use).
|
||||||
*
|
|
||||||
* ```ts
|
|
||||||
* import { test, expect } from '@playwright/test';
|
|
||||||
*
|
|
||||||
* test('basic test', async ({ page }) => {
|
|
||||||
* // ...
|
|
||||||
* });
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the
|
|
||||||
* test has finished. `page` fixture provides a [Page] object that is available to the test.
|
|
||||||
*
|
|
||||||
* Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Many fixtures are
|
|
||||||
* designed as "options" that you can set in your
|
|
||||||
* [testConfig.use](https://playwright.dev/docs/api/class-testconfig#test-config-use) section.
|
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
* import { PlaywrightTestConfig } from '@playwright/test';
|
* import { PlaywrightTestConfig } from '@playwright/test';
|
||||||
|
|
@ -2462,7 +2430,7 @@ export type VideoMode = 'off' | 'on' | 'retain-on-failure' | 'on-first-retry' |
|
||||||
* export default config;
|
* export default config;
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* Alternatively, with [test.use(fixtures)](https://playwright.dev/docs/api/class-test#test-use) you can override some
|
* Alternatively, with [test.use(options)](https://playwright.dev/docs/api/class-test#test-use) you can override some
|
||||||
* options for a file.
|
* options for a file.
|
||||||
*
|
*
|
||||||
* ```ts
|
* ```ts
|
||||||
|
|
@ -2578,7 +2546,8 @@ export interface PlaywrightTestOptions {
|
||||||
/**
|
/**
|
||||||
* Options used to create the context, as passed to
|
* Options used to create the context, as passed to
|
||||||
* [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context). Specific options
|
* [browser.newContext([options])](https://playwright.dev/docs/api/class-browser#browser-new-context). Specific options
|
||||||
* like [fixtures.viewport](https://playwright.dev/docs/api/class-fixtures#fixtures-viewport) take priority over this.
|
* like [testOptions.viewport](https://playwright.dev/docs/api/class-testoptions#test-options-viewport) take priority over
|
||||||
|
* this.
|
||||||
*/
|
*/
|
||||||
contextOptions: BrowserContextOptions;
|
contextOptions: BrowserContextOptions;
|
||||||
/**
|
/**
|
||||||
|
|
@ -2617,41 +2586,20 @@ export interface PlaywrightTestOptions {
|
||||||
* Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the
|
* Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the
|
||||||
* test has finished. `page` fixture provides a [Page] object that is available to the test.
|
* test has finished. `page` fixture provides a [Page] object that is available to the test.
|
||||||
*
|
*
|
||||||
* Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Many fixtures are
|
* Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Playwright Test
|
||||||
* designed as "options" that you can set in your
|
* also [provides options][TestOptions] to configure
|
||||||
* [testConfig.use](https://playwright.dev/docs/api/class-testconfig#test-config-use) section.
|
* [fixtures.browser](https://playwright.dev/docs/api/class-fixtures#fixtures-browser),
|
||||||
*
|
* [fixtures.context](https://playwright.dev/docs/api/class-fixtures#fixtures-context) and
|
||||||
* ```ts
|
* [fixtures.page](https://playwright.dev/docs/api/class-fixtures#fixtures-page).
|
||||||
* import { PlaywrightTestConfig } from '@playwright/test';
|
|
||||||
* const config: PlaywrightTestConfig = {
|
|
||||||
* use: {
|
|
||||||
* headless: false,
|
|
||||||
* viewport: { width: 1280, height: 720 },
|
|
||||||
* ignoreHTTPSErrors: true,
|
|
||||||
* video: 'on-first-retry',
|
|
||||||
* },
|
|
||||||
* };
|
|
||||||
* export default config;
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* Alternatively, with [test.use(fixtures)](https://playwright.dev/docs/api/class-test#test-use) you can override some
|
|
||||||
* options for a file.
|
|
||||||
*
|
|
||||||
* ```ts
|
|
||||||
* // example.spec.ts
|
|
||||||
* import { test, expect } from '@playwright/test';
|
|
||||||
*
|
|
||||||
* // Run tests in this file with portrait-like viewport.
|
|
||||||
* test.use({ viewport: { width: 600, height: 900 } });
|
|
||||||
*
|
|
||||||
* test('my portrait test', async ({ page }) => {
|
|
||||||
* // ...
|
|
||||||
* });
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
export interface PlaywrightWorkerArgs {
|
export interface PlaywrightWorkerArgs {
|
||||||
playwright: typeof import('..');
|
playwright: typeof import('..');
|
||||||
|
/**
|
||||||
|
* [Browser] instance is shared between all tests in the [same worker](https://playwright.dev/docs/test-parallel) - this makes testing efficient.
|
||||||
|
* However, each test runs in an isolated [BrowserContext] and gets a fresh environment.
|
||||||
|
*
|
||||||
|
* Learn how to [configure browser](https://playwright.dev/docs/test-configuration) and see [available options][TestOptions].
|
||||||
|
*/
|
||||||
browser: Browser;
|
browser: Browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2674,48 +2622,20 @@ export interface PlaywrightWorkerArgs {
|
||||||
* Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the
|
* Given the test above, Playwright Test will set up the `page` fixture before running the test, and tear it down after the
|
||||||
* test has finished. `page` fixture provides a [Page] object that is available to the test.
|
* test has finished. `page` fixture provides a [Page] object that is available to the test.
|
||||||
*
|
*
|
||||||
* Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Many fixtures are
|
* Playwright Test comes with builtin fixtures listed below, and you can add your own fixtures as well. Playwright Test
|
||||||
* designed as "options" that you can set in your
|
* also [provides options][TestOptions] to configure
|
||||||
* [testConfig.use](https://playwright.dev/docs/api/class-testconfig#test-config-use) section.
|
* [fixtures.browser](https://playwright.dev/docs/api/class-fixtures#fixtures-browser),
|
||||||
*
|
* [fixtures.context](https://playwright.dev/docs/api/class-fixtures#fixtures-context) and
|
||||||
* ```ts
|
* [fixtures.page](https://playwright.dev/docs/api/class-fixtures#fixtures-page).
|
||||||
* import { PlaywrightTestConfig } from '@playwright/test';
|
|
||||||
* const config: PlaywrightTestConfig = {
|
|
||||||
* use: {
|
|
||||||
* headless: false,
|
|
||||||
* viewport: { width: 1280, height: 720 },
|
|
||||||
* ignoreHTTPSErrors: true,
|
|
||||||
* video: 'on-first-retry',
|
|
||||||
* },
|
|
||||||
* };
|
|
||||||
* export default config;
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
* Alternatively, with [test.use(fixtures)](https://playwright.dev/docs/api/class-test#test-use) you can override some
|
|
||||||
* options for a file.
|
|
||||||
*
|
|
||||||
* ```ts
|
|
||||||
* // example.spec.ts
|
|
||||||
* import { test, expect } from '@playwright/test';
|
|
||||||
*
|
|
||||||
* // Run tests in this file with portrait-like viewport.
|
|
||||||
* test.use({ viewport: { width: 600, height: 900 } });
|
|
||||||
*
|
|
||||||
* test('my portrait test', async ({ page }) => {
|
|
||||||
* // ...
|
|
||||||
* });
|
|
||||||
* ```
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
export interface PlaywrightTestArgs {
|
export interface PlaywrightTestArgs {
|
||||||
createContext: (options?: BrowserContextOptions) => Promise<BrowserContext>;
|
|
||||||
/**
|
/**
|
||||||
* Isolated [BrowserContext] instance, created for each test. Since contexts are isolated between each other, every test
|
* Isolated [BrowserContext] instance, created for each test. Since contexts are isolated between each other, every test
|
||||||
* gets a fresh environment, even when multiple tests run in a single [Browser] for maximum efficiency.
|
* gets a fresh environment, even when multiple tests run in a single [Browser] for maximum efficiency.
|
||||||
*
|
*
|
||||||
* Learn how to [configure context](https://playwright.dev/docs/test-configuration) through other fixtures and options.
|
* Learn how to [configure context](https://playwright.dev/docs/test-configuration) and see [available options][TestOptions].
|
||||||
*
|
*
|
||||||
* The [fixtures.page](https://playwright.dev/docs/api/class-fixtures#fixtures-page) belongs to this context.
|
* Default [fixtures.page](https://playwright.dev/docs/api/class-fixtures#fixtures-page) belongs to this context.
|
||||||
*/
|
*/
|
||||||
context: BrowserContext;
|
context: BrowserContext;
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -494,8 +494,8 @@ class TypesGenerator {
|
||||||
['Config', 'TestConfig'],
|
['Config', 'TestConfig'],
|
||||||
['FullConfig', 'TestConfig'],
|
['FullConfig', 'TestConfig'],
|
||||||
['Project', 'TestProject'],
|
['Project', 'TestProject'],
|
||||||
['PlaywrightWorkerOptions', 'Fixtures'],
|
['PlaywrightWorkerOptions', 'TestOptions'],
|
||||||
['PlaywrightTestOptions', 'Fixtures'],
|
['PlaywrightTestOptions', 'TestOptions'],
|
||||||
['PlaywrightWorkerArgs', 'Fixtures'],
|
['PlaywrightWorkerArgs', 'Fixtures'],
|
||||||
['PlaywrightTestArgs', 'Fixtures'],
|
['PlaywrightTestArgs', 'Fixtures'],
|
||||||
]);
|
]);
|
||||||
|
|
|
||||||
1
utils/generate_types/overrides-test.d.ts
vendored
1
utils/generate_types/overrides-test.d.ts
vendored
|
|
@ -330,7 +330,6 @@ export interface PlaywrightWorkerArgs {
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PlaywrightTestArgs {
|
export interface PlaywrightTestArgs {
|
||||||
createContext: (options?: BrowserContextOptions) => Promise<BrowserContext>;
|
|
||||||
context: BrowserContext;
|
context: BrowserContext;
|
||||||
page: Page;
|
page: Page;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue