fast-browser-with-jev
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
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); }'
|
||||
Reference in New Issue
Block a user