Add reusable Playwright test harness
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- playwright, powershell, typescript
- Domain
- build-system, ci-cd, documentation, testing
Research direction
Start by reviewing the existing Pester task conventions and the source/Tasks, source/Public, and source/Private layouts. Trace module exports through RequiredModules.psd1, Task.* aliases, and AliasesToExport, then inspect build.yaml and the requested Playwright files and output paths. Done means the testUI workflow, configuration and failure behavior, diagnostics, unit tests, CI setup, and WikiSource documentation meet the listed acceptance criteria.
Written by the indexing model from the issue text.
Description
Summary
Add a reusable Playwright end-to-end test harness to this task module so Sampler-based repositories can run browser tests through the same build entry point and reporting conventions as their Pester tests.
Scope
- Add a shipped InvokeBuild task file under
source/Tasksand export it through aTask.*alias andAliasesToExportmetadata. - Keep reusable helper logic in one-function-per-file module functions under
source/Publicorsource/Private; do not add a sibling task PSM1. - Provide Pester 5 wrapper tasks for importing Pester, running Playwright wrappers, failing the build on test failures, and a convenient
testUIworkflow alias. - Support defaults-first configuration where invocation parameters override
build.yaml, andbuild.yamloverrides module defaults. - Default test discovery to
tests/playwright, with configurable run paths, tags, and excluded tags. - Write Pester NUnit XML results under
output/playwright. - Document a Node Playwright harness using
package.json,playwright.config.ts, and browser test folders such astests/smoke. - Configure Playwright to retain traces, screenshots, and videos on failures and emit a JUnit result file under
output/playwright. - Define how
npm ciand the required Playwright browser installation are bootstrapped locally and in CI. - Keep secrets and target URLs environment-driven; no credentials should be committed.
- Add unit tests for configuration conversion, path resolution, filtering, and failure propagation.
- Add WikiSource documentation for consumer setup, configuration, task reference, output files, and CI integration.
Suggested task surface
Import_Pester_For_PlaywrightInvoke_Playwright_Pester_Tests_v5Fail_Build_If_Playwright_Tests_FailedPlaywright_Tests_Stop_On_FailtestUI
Acceptance criteria
- A consumer can add the module through
RequiredModules.psd1, import itsTask.*alias throughModuleBuildTasks, and run./build.ps1 -Tasks testUI. - Missing configured test paths fail with a clear actionable error.
- Playwright and Pester result files are generated in deterministic locations below
output/playwright. - Browser diagnostics are retained on failures and can be uploaded as CI artifacts.
- A failing browser test fails the InvokeBuild workflow.
- The harness works on supported PowerShell and GitHub-hosted runner environments.
- Public/private helper functions follow this repository's source layout and test conventions.
- Documentation describes the complete setup without depending on repository-specific application details.
- Dominant language
- PowerShell
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Similar issues
-
type/automation type/tech-debt
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
conda-forge/python-feedstock#934 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
bazelbuild/rules_rust#4266 ·
-
priority: p3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
googleapis/librarian#7636 ·
-
Bug v3
Difficulty 2/5 1-3 hours Newbie friendliness 86/100