3.6 KiB
| id | title |
|---|---|
| test-annotations | Annotations |
Annotations
Playwright Test supports test annotations to deal with failures, flakiness, skip, focus and tag tests:
skipmarks the test as irrelevant. Playwright Test does not run such a test. Use this annotation when the test is not applicable in some configuration.failmarks the test as failing. Playwright Test will run this test and ensure it does indeed fail. If the test does not fail, Playwright Test will complain.fixmemarks the test as failing. Playwright Test will not run this test, as opposite to thefailannotation. Usefixmewhen running the test is slow or crashy.slowmarks the test as slow and triples the test timeout.
Focus a test
You can focus some tests. When there are focused tests, only these tests run.
test.only('focus this test', async ({ page }) => {
// Run only focused tests in the entire project.
});
test.only('focus this test', async ({ page }) => {
// Run only focused tests in the entire project.
});
Skip a test
You can skip certain tests based on the condition.
test('skip this test', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
});
test('skip this test', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
});
Group tests
You can group tests to give them a logical name or to scope before/after hooks to the group.
const { test, expect } = require('@playwright/test');
test.describe('two tests', () => {
test('one', async ({ page }) => {
// ...
});
test('two', async ({ page }) => {
// ...
});
});
import { test, expect } from '@playwright/test';
test.describe('two tests', () => {
test('one', async ({ page }) => {
// ...
});
test('two', async ({ page }) => {
// ...
});
});
Annotations apply when the condition is truthy, or always when no condition is passed, and may include a description. Annotations may depend on test fixtures. There could be multiple annotations on the same test, possibly in different configurations.
Available annotations:
skipmarks the test as irrelevant. Playwright Test does not run such a test. Use this annotation when the test is not applicable in some configuration.failmarks the test as failing. Playwright Test will run this test and ensure it does indeed fail. If the test does not fail, Playwright Test will complain.fixmemarks the test as failing. Playwright Test will not run this test, as opposite to thefailannotation. Usefixmewhen running the test is slow or crashy.slowmarks the test as slow and triples the test timeout.
Tag tests
Sometimes you want to tag your tests as @fast or @slow and only run the tests that have the certain tag. We recommend that you use the --grep and --grep-invert command line flags for that:
const { test, expect } = require('@playwright/test');
test('Test login page @fast', async ({ page }) => {
// ...
});
test('Test full report @slow', async ({ page }) => {
// ...
});
import { test, expect } from '@playwright/test';
test('Test login page @fast', async ({ page }) => {
// ...
});
test('Test full report @slow', async ({ page }) => {
// ...
});
You will then be able to run only that test:
npx playwright test --grep @fast
Or if you want the opposite, you can skip the tests with a certain tag:
npx playwright test --grep-invert @slow