Files
harness-tools/.github/workflows/fast-browser-scenarios.yml
jb fd63b0ccec
fast-browser scenarios / Offline scenario contract tests (push) Failing after 44s
fast-browser scenarios / Local Chromium headless scenarios (push) Failing after 23s
fast-browser-with-jev
2026-09-20 12:24:08 -04:00

82 lines
3.9 KiB
YAML

name: fast-browser scenarios
on:
push:
paths:
- "extensions/fast-browser/**"
- "package.json"
- "bun.lock"
- ".github/workflows/fast-browser-scenarios.yml"
pull_request:
paths:
- "extensions/fast-browser/**"
- "package.json"
- "bun.lock"
- ".github/workflows/fast-browser-scenarios.yml"
workflow_dispatch:
permissions:
contents: read
jobs:
offline:
name: Offline scenario contract tests
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.14"
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install pinned dependencies
run: |
bun install --frozen-lockfile
python -m pip install --disable-pip-version-check 'browser-harness==0.1.13'
- name: Run offline scenario contract tests
run: |
node --test --experimental-strip-types \
extensions/fast-browser/scenario-cli.test.ts \
extensions/fast-browser/scenarios.test.ts \
extensions/fast-browser/reports.test.ts
python -m unittest discover -s extensions/fast-browser -p 'test_*.py'
- name: Validate local scenario examples without a browser
run: |
node --experimental-strip-types extensions/fast-browser/scenario-cli.ts --check --format json extensions/fast-browser/scenarios/examples/local-form.json
node --experimental-strip-types extensions/fast-browser/scenario-cli.ts --check --format json extensions/fast-browser/scenarios/examples/local-login.json
node --experimental-strip-types extensions/fast-browser/scenario-cli.ts --check --format json extensions/fast-browser/scenarios/examples/local-popup.json
live-headless:
name: Local Chromium headless scenarios
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v2
with:
bun-version: "1.3.14"
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install pinned browser dependencies
run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends chromium
python -m venv .pi/fast-browser-demo/venv
.pi/fast-browser-demo/venv/bin/python -m pip install --disable-pip-version-check 'browser-harness==0.1.13'
bun install --frozen-lockfile
- name: Run declarative CLI scenarios against local Chromium
env:
FAST_BROWSER_FIXTURE_MODE: "local"
FAST_BROWSER_TEST_PASSWORD: "demo-password"
FAST_BROWSER_PYTHON: "${{ github.workspace }}/.pi/fast-browser-demo/venv/bin/python"
run: |
report_dir="$RUNNER_TEMP/fast-browser-scenario-reports"
mkdir -m 700 -p "$report_dir"
node --experimental-strip-types extensions/fast-browser/scenario-cli.ts --headless --capture-on-request --format json --report "$report_dir/local-form.json" extensions/fast-browser/scenarios/examples/local-form.json
node --experimental-strip-types extensions/fast-browser/scenario-cli.ts --headless --capture-on-request --format json --report "$report_dir/local-login.json" extensions/fast-browser/scenarios/examples/local-login.json
node --experimental-strip-types extensions/fast-browser/scenario-cli.ts --headless --capture-on-request --format json --report "$report_dir/local-popup.json" extensions/fast-browser/scenarios/examples/local-popup.json
node --input-type=module -e 'import { readFileSync, accessSync } from "node:fs"; for (const name of ["local-form", "local-login", "local-popup"]) { const report = JSON.parse(readFileSync(`${process.env.RUNNER_TEMP}/fast-browser-scenario-reports/${name}.json`, "utf8")); for (const evidence of report.evidence ?? []) if (evidence.status === "captured") accessSync(evidence.retainedPath); }'