Assistant: codex Assistant-Model: gpt-6.1-sol Assistant-Session: 01a14bfc-9643-7872-aa12-98326dcf25e7
21 KiB
| id | name | summary | owner | status | domain | tags | maturity | external_evidence | discovery | availability | relations | evidence | consumer_guidance | promotion_history | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| capability.infotech.headless-browser | Headless Browser Automation | Headless browser automation, screenshots and keyboard trials through rapp-playwright 0.1.0 (Playwright 1.64.0, Chromium 156.0.8078.4). Human and coding-agent managed trials passed on 2026-10-18 through the existing supervised workstation connection. Use the documented kubectl port-forward to 127.0.0.1:18081, then the pinned standalone Python client preflight/trial commands. No local browser installation. Independent per-caller managed admission remains pending; availability stays A5. Contract: 8831a05aeb/docs/consumer-contract.md. |
reuse-surface | reviewed | infotech |
|
|
|
|
|
|
|
|
|
Headless Browser Automation
Recommendation
Start with Playwright controlling headless Chromium for general browser
automation, UI tests, screenshots and JavaScript-rendered page extraction.
This follows implemented usage in four working repos. Playwright is the automation
library; Chromium is the browser engine. Use @playwright/test for a JavaScript
test suite, the playwright library for standalone JavaScript scripts, or Python
playwright when the consumer is Python.
This is a reuse recommendation reviewed against source on 2026-10-13, not a mandatory estate standard or a benchmark verdict against Selenium/Puppeteer. reuse-surface maintains this discovery record; the example repos maintain their implementations and the upstream Playwright project maintains the library.
Service provider and delivery status
rapp-playwright 0.1.0 is published and verified as a local container provider. The current vector is D3 / A5 / C2 / R2. A5 means a deployable container under the maturity standard; managed platform operation is A6 and remains pending Railiance admission. Source examples remain available at A2. No browser is installed on the caller's machine by discovery or by running the Python client.
rapp-playwright owns the browser service; railiance-platform owns managed
lifecycle admission. reuse-surface owns this record, discovery, consumption
guidance and evidence assessment. The
content-explorer intake
concerns registry relevance and availability clarity; CONTENT-WP-0000-T04
acceptance remains with the consumer.
Verified client path
Only Python 3.10+ is needed by the consumer. Download the single revision-pinned client into a working directory; a sibling checkout is not required:
curl -fL --output rapp_playwright.py https://forgejo.coulomb.social/coulomb/rapp-playwright/raw/commit/8831a05aeba5ce588f3b395ade676dde2a151c5d/client/rapp_playwright.py
python3 rapp_playwright.py --url http://127.0.0.1:18083 preflight
python3 rapp_playwright.py --url http://127.0.0.1:18083 trial --out trial-01
Use a fresh output directory for each run. Port 18083 was verified on this
workstation on 2026-10-13; it is an ephemeral local provider, not a permanent
or remotely reachable endpoint. Preflight must report available: true, API 1,
service 0.1.0, Playwright 1.64.0, Chromium 156.0.8078.4, and the expected
release/location. Connection failure means the provider or tunnel is unavailable,
not that another browser capability is needed. Use the local setup below or the
source-adaptation fallback. Repeat --url on later status/download commands.
The fixture trial checks Tab focus, Enter activation and the counter assertion
across 1280×800 and 390×844 viewports, then downloads screenshots and a
receipt. It does not inspect or accept the consumer's own UI. run.json is a
private run handle and must not be published. For trial/run, exit 0 means
passed, 2 means UI assertion failed, and 3 means infrastructure/setup or another
unsuccessful result; status exit 0 only means retrieval succeeded.
Reproduce the local provider
The published release targets linux/amd64. With Docker and image pull access, start the immutable container in one terminal, then point the client at port 18081 in another:
docker run --rm --name rapp-playwright-local --read-only \
--tmpfs /tmp:rw,size=512m --shm-size=256m --memory=1g --cpus=1 \
--cap-drop ALL --security-opt no-new-privileges \
--mount type=volume,src=rapp-playwright-local-data,dst=/data \
-p 127.0.0.1:18081:8080 -e HOST=0.0.0.0 \
-e EXECUTION_LOCATION=workstation-container \
-e RELEASE_ID=sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441 \
forgejo.coulomb.social/coulomb/rapp-playwright@sha256:8d6fd5a8172cf906bb503642ed620761945c5138b86f6396c36f65cbe6def441
python3 rapp_playwright.py --url http://127.0.0.1:18081 preflight
python3 rapp_playwright.py --url http://127.0.0.1:18081 trial --out trial-local-01
This is the provider's documented local setup with the published digest pinned; it was not redeployed by this registry review. Existing independent final-release receipts and the fresh discovery trial use the same digest. The default fixture requires no external target grant. The provider supports trusted/synthetic pages, not hostile-page or mutually untrusted tenant execution.
Supervised managed development path — verified 2026-10-18
The existing private deployment was used by one actual human and one coding agent, each completing 14 keyboard/responsive steps with downloaded screenshots. This build profile uses an existing authenticated workstation connection; independent per-caller identity, transport and final managed admission remain open. Establish that existing connection, then use the same supported provider client:
kubectl -n playwright port-forward deployment/playwright 18081:8080 --address 127.0.0.1
# In another terminal, while the tunnel remains running:
python3 rapp_playwright.py preflight
python3 rapp_playwright.py trial --out trial-managed-01
Both managed trials passed against the deployed release digest already listed above. The client is byte-identical to the pinned published commit. Human receipt, agent receipt, and profile/commands state the exact scope. Use a fresh output directory; keep the run capability private. Do not distribute a kubeconfig or treat this receipt as a broader identity acceptance. Stop the port-forward with Ctrl-C when finished. A remote browser's localhost belongs to the provider. Consumer applications need a provider-reachable, explicitly allowed origin; the browser API tunnel does not forward a workstation app. See the provider contract before running a target scenario.
Pinned delivery evidence
All provider links below are pinned to published commit
8831a05aeba5ce588f3b395ade676dde2a151c5d:
- Consumer contract.
- Release manifest and publication/pull evidence.
- Independent consumer evidence, including final-release screenshots, keyboard assertions, wrong-token rejection, UI failure and unavailable-service results. These are retained provider-side reports; this review separately verified the fixture path.
- Fresh registry review and trial.
Existing implementations
Paths in frontmatter are relative to the reuse-surface repository root. The links below work with sibling checkouts. The cited files were clean at these revisions.
| Repo and inspected revision | What is implemented | Reuse starting point |
|---|---|---|
whynot-design — a79a4d803e9aed13f66d072bf409b6f86000f01f |
Playwright Test, explicitly headless Chromium, screenshot comparisons | Configuration, visual tests, dependency/scripts |
coulomb-social — 5c32757b987ab1610cdb46a808d56c75f569f581 |
JavaScript Playwright scripts launching headless Chromium for browser tests and extraction | Use-case test, script dependency |
core-hub — a69ad325271485afe284a6db85673dfa30d9d4ad |
Python synchronous Playwright visual checks launching Chromium with the default headless mode | Visual-check script, development dependency |
frontend-patterns — 047a6a2d314ff5a9d2a87d5bc987d7d84835f682 |
Playwright experiments using Chromium and Firefox, with retained execution receipts | Runner, setup and limitations, result |
These are source/retained-receipt observations, not newly executed test results. The frontend-patterns example uses an explicit Chromium binary override; do not copy its workstation paths as a portable browser installation recipe.
Alternatives and misleading matches
- Selenium: testdrive-jsui's optional development dependencies
declare it at
701341d7fa520f860245e28eb16d44b767fd116b. A declaration alone does not establish an implemented or passing browser workflow. - test-driver: SCOPE.md at
c3ad06e598057862cf500cbd46c7c8b6f83885edexplicitly excludes a browser engine, JavaScript execution, screenshots and DOM timing. Historical Playwright plans are not an available implementation. - Puppeteer: no verified implementation was found in this inspection. This is not a claim that every working repo has been exhaustively searched.
- Firefox/WebKit: Playwright supports both upstream. Firefox has retained experiment evidence here; WebKit has no verified local example in this record.
Source-adaptation fallback for the consuming worker
- Query this checkout with
python3 -m reuse_surface.cli query --keyword browserfrom the reuse-surface root, then open this entry. If the CLI is installed,reuse-surface query --keyword browseris equivalent.plan-check --intent "headless browser" --no-llmranks this entry first. Its reuse verdict describes relevance; provider preflight determines current runtime availability. Use source adaptation when the provider path is unsuitable. - Pick the example matching the target repo's language and task. Inspect its fixture/server assumptions before adapting the smallest useful test or script.
- Use the target repo's package manager and lockfile. Select a compatible
Playwright version and install its matching Chromium binary. For an installed
Node dependency, use
npx playwright install chromium; for an installed Python dependency, usepython -m playwright install chromiumin its environment. Follow the upstream browser/system-dependency instructions if system libraries are missing. No common estate version is established here. - Against a local fixture or the target repo's local development server, launch headless Chromium, load one page, assert one meaningful rendered element or interaction, save a screenshot if relevant, and close the browser. Exercise a JavaScript-driven change if JavaScript rendering is the reason for adoption.
- Report the consumer repo, reference example, package/browser versions, exact command, assertion outcome, artifact paths and any setup failure. The trial remains unverified until this evidence exists; installation alone is not success.
The hosted service reads published repository indexes. A local edit does not
by itself make this entry available at reuse.coulomb.social; use the local query
above for an unpublished trial and verify the hosted entry after publication.