From 98f8dc7ecffa0d8f80fc494f5173414b65c496c3 Mon Sep 17 00:00:00 2001 From: Yegor Stepanov Date: Fri, 26 Jun 2026 23:00:48 +0100 Subject: [PATCH 1/2] Separate autobahn into a separate workflow --- .github/workflows/ci.yml | 19 ------------------- README.md | 7 +++---- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fcc6e3..1098479 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,22 +47,3 @@ jobs: run: | go vet ./... go test -run='^$' -bench='^$' ./... - - autobahn: - name: autobahn conformance - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Run Autobahn fuzzing client - working-directory: autobahn - run: docker compose up --build --abort-on-container-exit - - name: Check conformance report - working-directory: autobahn - run: python3 check_report.py - - name: Upload Autobahn report - if: always() - uses: actions/upload-artifact@v4 - with: - name: autobahn-report - path: autobahn/report/ - if-no-files-found: warn diff --git a/README.md b/README.md index 7129f74..8bc963c 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,10 @@ **A context-first, concurrency-safe, fast WebSocket library for Go.** [![CI](https://github.com/ystepanoff/gowest/actions/workflows/ci.yml/badge.svg)](https://github.com/ystepanoff/gowest/actions/workflows/ci.yml) +[![Autobahn](https://github.com/ystepanoff/gowest/actions/workflows/autobahn.yml/badge.svg)](https://github.com/ystepanoff/gowest/actions/workflows/autobahn.yml) [![Go Reference](https://pkg.go.dev/badge/github.com/ystepanoff/gowest.svg)](https://pkg.go.dev/github.com/ystepanoff/gowest) [![Go Report Card](https://goreportcard.com/badge/github.com/ystepanoff/gowest)](https://goreportcard.com/report/github.com/ystepanoff/gowest) - - ![GoWest](GoWest.png) gowest is a small WebSocket library built around a single `Conn` type with a @@ -221,7 +219,8 @@ harness in [`autobahn/`](autobahn/). Because gowest is server-only it runs in fuzzing-client mode (Autobahn connects to a gowest echo server and drives every RFC 6455 case). -**CI runs the full suite on every push** (the `autobahn` job in the workflow) +**CI runs the full suite on every push** (the dedicated +[Autobahn workflow](.github/workflows/autobahn.yml), reflected in the badge above) and **fails the build if any case regresses** — `autobahn/check_report.py` parses the report and treats anything other than `OK` / `NON-STRICT` / `INFORMATIONAL` / `UNIMPLEMENTED` as a failure (`wstest` itself always exits 0, so this gate is what From 5fd5736d467655373aa97f339a1910f69a4b1e1b Mon Sep 17 00:00:00 2001 From: Yegor Stepanov Date: Fri, 26 Jun 2026 23:03:21 +0100 Subject: [PATCH 2/2] add autobahn.yml --- .github/workflows/autobahn.yml | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/autobahn.yml diff --git a/.github/workflows/autobahn.yml b/.github/workflows/autobahn.yml new file mode 100644 index 0000000..b263dbd --- /dev/null +++ b/.github/workflows/autobahn.yml @@ -0,0 +1,35 @@ +name: Autobahn + +on: + push: + branches: [main, dev] + pull_request: + branches: [main, dev] + +permissions: + contents: read + +jobs: + conformance: + name: autobahn conformance + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + # GitHub-hosted Ubuntu runners ship Docker and the compose plugin, so the + # same setup used locally (autobahn/docker-compose.yml) runs unchanged. + - name: Run Autobahn fuzzing client + working-directory: autobahn + # --abort-on-container-exit stops once the client finishes; the gowest + # server never exits on its own. wstest exits 0 regardless of results, + # so the run is gated by check_report.py below, not by this step. + run: docker compose up --build --abort-on-container-exit + - name: Check conformance report + working-directory: autobahn + run: python3 check_report.py + - name: Upload Autobahn report + if: always() + uses: actions/upload-artifact@v4 + with: + name: autobahn-report + path: autobahn/report/ + if-no-files-found: warn