Use when designing a test automation framework from scratch or re-architecting one that grew organically. Walks seven steps from inventorying the app to runner, layout, fixtures, object model, data and mocks, reporting, CI and conventions, and outputs a written blueprint with a build order.
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Deep mechanics for Step 3 of test-framework-blueprint. The blueprint decisions
(which scope, what each fixture provides, whether tests mutate it) live in
SKILL.md; this file carries the framework-specific wiring.
All per the test-fixtures docs:
test.extend(); teardown code follows await use(...)
in the same function, so setup and teardown live together.{ auto: true }: they are "set up for each test/worker, even
when the test does not list them directly."mergeTests(); this is
what makes the fixtures/index.ts single-import convention work.{ option: true }) configured through test.use() per project.If Step 2 chose Python, the same architecture maps onto pytest fixtures. Per
the pytest fixtures how-to,
tests request fixtures by declaring them as arguments; available scopes are
function (the default), class, module, package, and session, where
scope controls destruction (a function-scoped fixture "is destroyed at the
end of the test"; a session-scoped one at the end of the test session).
The fixtures/index.ts merged-export convention becomes conftest.py
(fixtures there are accessible to "tests from multiple test modules in the
directory"), teardown code goes after yield, and { auto: true } becomes
@pytest.fixture(autouse=True). Playwright's worker scope has no direct
pytest twin; session scope plus per-worker IDs (e.g. pytest-xdist worker
id) fills the same database-per-worker role.