Skip to content

ci(release): harden RxJS 9 single-maintainer publishing #24

ci(release): harden RxJS 9 single-maintainer publishing

ci(release): harden RxJS 9 single-maintainer publishing #24

Workflow file for this run

name: Observable WPT
on:
pull_request:
types: ['opened', 'reopened', 'synchronize']
paths:
- '.github/actions/install-dependencies/**'
- '.github/workflows/observable-wpt.yml'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- 'packages/observable-polyfill/**'
- 'packages/rxjs/**'
push:
branches: ['master']
schedule:
- cron: '23 9 * * 2'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: observable-wpt-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
WPT_COMMIT: 6a009d73f0d315941b90cac13a9523a2a08c631b
WPT_PYTHON: 3.11.9
jobs:
pinned:
if: github.event_name != 'schedule'
name: Pinned Chrome 150 Observable WPT (Node 24)
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install JavaScript dependencies
uses: ./.github/actions/install-dependencies
with:
node-version: '24'
- name: Install pinned Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: ${{ env.WPT_PYTHON }}
- name: Install WPT native build dependencies
run: sudo apt-get update && sudo apt-get install --yes libatspi2.0-dev libcairo2-dev libgirepository1.0-dev pkg-config
- name: Restore pinned WPT runner
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .cache/rxjs-wpt/runner
key: observable-wpt-runner-${{ runner.os }}-${{ runner.arch }}-python-${{ env.WPT_PYTHON }}-${{ env.WPT_COMMIT }}
- name: Restore pinned browser
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .cache/rxjs-wpt/browser
key: observable-wpt-browser-${{ runner.os }}-chrome-150.0.7871.126-${{ hashFiles('packages/observable-polyfill/test/wpt/browser-lock.json') }}
- name: Verify the pinned import
run: pnpm run wpt:verify-import
- name: Run native and fallback lifecycle contract
run: pnpm run test:lifecycle
- name: Run native and fallback extension-kernel contract
run: pnpm run test:kernel
- name: Run the attested conformance suite
run: pnpm run test:wpt
- name: Upload WPT evidence
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: observable-wpt-pinned-${{ github.run_id }}
if-no-files-found: warn
retention-days: 14
path: |
.cache/rxjs-wpt/reports/**/wptreport.json
.cache/rxjs-wpt/reports/**/wpt.raw.log
.cache/rxjs-wpt/reports/**/wpt.log
.cache/rxjs-wpt/reports/**/audit.json
.cache/rxjs-wpt/reports/**/attestations.json
.cache/rxjs-wpt/reports/**/status-diff.txt
packages/observable-polyfill/test/wpt/expected-test-urls.json
latest-chrome:
if: github.event_name == 'schedule'
name: Latest stable Chrome Observable WPT (Node 24, advisory)
runs-on: ubuntu-latest
timeout-minutes: 20
continue-on-error: true
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install JavaScript dependencies
uses: ./.github/actions/install-dependencies
with:
node-version: '24'
- name: Install pinned Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: ${{ env.WPT_PYTHON }}
- name: Install WPT native build dependencies
run: sudo apt-get update && sudo apt-get install --yes libatspi2.0-dev libcairo2-dev libgirepository1.0-dev pkg-config
- name: Restore pinned WPT runner
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: .cache/rxjs-wpt/runner
key: observable-wpt-runner-${{ runner.os }}-${{ runner.arch }}-python-${{ env.WPT_PYTHON }}-${{ env.WPT_COMMIT }}
- name: Install latest stable Chrome and matching driver
id: chrome
uses: browser-actions/setup-chrome@2e1d749697dd1612b833dba4a722266286fbefcd # v2.1.2
with:
chrome-version: stable
install-chromedriver: true
- name: Verify the pinned import
run: pnpm run wpt:verify-import
- name: Run native and fallback lifecycle contract
run: pnpm run test:lifecycle
env:
RXJS_WPT_ALLOW_BROWSER_DRIFT: '1'
RXJS_WPT_CHROME_BINARY: ${{ steps.chrome.outputs.chrome-path }}
RXJS_WPT_CHROMEDRIVER: ${{ steps.chrome.outputs.chromedriver-path }}
- name: Run native and fallback extension-kernel contract
run: pnpm run test:kernel
env:
RXJS_WPT_ALLOW_BROWSER_DRIFT: '1'
RXJS_WPT_CHROME_BINARY: ${{ steps.chrome.outputs.chrome-path }}
RXJS_WPT_CHROMEDRIVER: ${{ steps.chrome.outputs.chromedriver-path }}
- name: Run advisory browser-drift conformance check
run: pnpm run test:wpt
env:
RXJS_WPT_ALLOW_BROWSER_DRIFT: '1'
RXJS_WPT_CHROME_BINARY: ${{ steps.chrome.outputs.chrome-path }}
RXJS_WPT_CHROMEDRIVER: ${{ steps.chrome.outputs.chromedriver-path }}
- name: Upload WPT evidence
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: observable-wpt-latest-chrome-${{ github.run_id }}
if-no-files-found: warn
retention-days: 14
path: |
.cache/rxjs-wpt/reports/**/wptreport.json
.cache/rxjs-wpt/reports/**/wpt.raw.log
.cache/rxjs-wpt/reports/**/wpt.log
.cache/rxjs-wpt/reports/**/audit.json
.cache/rxjs-wpt/reports/**/attestations.json
.cache/rxjs-wpt/reports/**/status-diff.txt
packages/observable-polyfill/test/wpt/expected-test-urls.json