playwright/docs/src/test-reporter-api/class-testcase.md
Dmitry Gozman 3331a40647
feat(test runner): tags/annotations (#29248)
API changes:
- `test(title, details, body)` where details contain `tag` and
`annotation`.
- similar `details` property added to `test.skip`, `test.fail`,
`test.fixme`, `test.only`, `test.describe` and other `test.describe.*`
variations.
- `TestProject.tagFilter`/`TestConfig.tagFilter` that supports logical
tag expressions with `(`, `)`, `and`, `or` and `not`.
- `--tag` CLI option to filter by tags.
- New annotations are available in `TestInfo.annotations` and
`TestCase.annotations`.
- New tags are available in `TestCase.tags`.
    
Reporter changes:
- `json` reporter includes new tags in addition to old `@smoke`-style
tags. **Breaking**: tags are now listed with the leading `@` symbol.
- `html` reporter filters by old and new tags with the same `@smoke`
token.

Fixes #29229, fixes #23180.
2024-02-07 16:31:25 -08:00

3.6 KiB

class: TestCase

  • since: v1.10
  • langs: js

TestCase corresponds to every [method: Test.(call)] call in a test file. When a single [method: Test.(call)] is running in multiple projects or repeated multiple times, it will have multiple TestCase objects in corresponding projects' suites.

property: TestCase.annotations

  • since: v1.10
  • type: <[Array]<[Object]>>
    • type <[string]> Annotation type, for example 'skip' or 'fail'.
    • description ?<[string]> Optional description.

The list of annotations applicable to the current test. Includes:

  • annotations defined on the test or suite via [method: Test.(call)] and [method: Test.describe];
  • annotations implicitly added by methods [method: Test.skip], [method: Test.fixme] and [method: Test.fail];
  • annotations appended to [property: TestInfo.annotations] during the test execution.

Annotations are available during test execution through [property: TestInfo.annotations].

Learn more about test annotations.

property: TestCase.expectedStatus

  • since: v1.10
  • type: <[TestStatus]<"passed"|"failed"|"timedOut"|"skipped"|"interrupted">>

Expected test status.

  • Tests marked as [method: Test.skip] or [method: Test.fixme] are expected to be 'skipped'.
  • Tests marked as [method: Test.fail] are expected to be 'failed'.
  • Other tests are expected to be 'passed'.

See also [property: TestResult.status] for the actual status.

property: TestCase.id

  • since: v1.25
  • type: <[string]>

Unique test ID that is computed based on the test file name, test title and project name. Test ID can be used as a history ID.

property: TestCase.location

  • since: v1.10
  • type: <[Location]>

Location in the source where the test is defined.

method: TestCase.ok

  • since: v1.10
  • returns: <[boolean]>

Whether the test is considered running fine. Non-ok tests fail the test run with non-zero exit code.

method: TestCase.outcome

  • since: v1.10
  • returns: <[TestOutcome]<"skipped"|"expected"|"unexpected"|"flaky">>

Testing outcome for this test. Note that outcome is not the same as [property: TestResult.status]:

  • Test that is expected to fail and actually fails is 'expected'.
  • Test that passes on a second retry is 'flaky'.

property: TestCase.parent

  • since: v1.10
  • type: <[Suite]>

Suite this test case belongs to.

property: TestCase.repeatEachIndex

  • since: v1.10
  • type: <[int]>

Contains the repeat index when running in "repeat each" mode. This mode is enabled by passing --repeat-each to the command line.

property: TestCase.results

  • since: v1.10
  • type: <[Array]<[TestResult]>>

Results for each run of this test.

property: TestCase.retries

  • since: v1.10
  • type: <[int]>

The maximum number of retries given to this test in the configuration.

Learn more about test retries.

property: TestCase.tags

  • since: v1.42
  • type: <[Array]<[string]>>

The list of tags defined on the test or suite via [method: Test.(call)] or [method: Test.describe].

Learn more about test tags.

property: TestCase.timeout

  • since: v1.10
  • type: <[float]>

The timeout given to the test. Affected by [property: TestConfig.timeout], [property: TestProject.timeout], [method: Test.setTimeout], [method: Test.slow] and [method: TestInfo.setTimeout].

property: TestCase.title

  • since: v1.10
  • type: <[string]>

Test title as passed to the [method: Test.(call)] call.

method: TestCase.titlePath

  • since: v1.10
  • returns: <[Array]<[string]>>

Returns a list of titles from the root down to this test.