2222 pull_request :
2323
2424jobs :
25+ node :
26+ name : Node (${{ matrix.node }})
27+ runs-on : ubuntu-latest
28+ strategy :
29+ fail-fast : false
30+ matrix :
31+ node : ['22', '24', '26']
32+ steps :
33+ - uses : actions/checkout@v7
34+ - uses : actions/setup-node@v7
35+ with :
36+ node-version : ${{ matrix.node }}
37+ - run : npm ci && npm audit --omit=dev && npm test
38+ working-directory : server-node
39+
2540 browser :
2641 name : Browser lifecycle and dependency audit
2742 runs-on : ubuntu-latest
@@ -40,16 +55,20 @@ jobs:
4055 working-directory : test/browser
4156
4257 go :
43- name : Go
58+ name : Go (${{ matrix.go }})
4459 runs-on : ubuntu-latest
60+ strategy :
61+ fail-fast : false
62+ matrix :
63+ go : ['1.26.8', '1.27.1']
4564 steps :
4665 - uses : actions/checkout@v7
4766
4867 - uses : actions/setup-go@v7
4968 with :
5069 # crypto/tls only exposes ClientHelloInfo.Extensions from 1.24, which
5170 # native JA4 needs. go.mod says so; keep this in step with it.
52- go-version : ' 1.26.8 '
71+ go-version : ${{ matrix.go }}
5372 cache-dependency-path : server-go/go.sum
5473
5574 - name : Vet
@@ -67,20 +86,26 @@ jobs:
6786 govulncheck ./...
6887
6988 python :
70- name : Python
89+ name : Python (${{ matrix.python }})
7190 runs-on : ubuntu-latest
91+ strategy :
92+ fail-fast : false
93+ matrix :
94+ python : ['3.12', '3.14']
7295 steps :
7396 - uses : actions/checkout@v7
7497
7598 - uses : actions/setup-python@v7
7699 with :
77- python-version : ' 3.12 '
100+ python-version : ${{ matrix.python }}
78101 cache : pip
79102 cache-dependency-path : server-python/requirements.lock
80103
81104 - name : Install dependencies
82105 working-directory : server-python
83- run : pip install --require-hashes -r requirements.lock
106+ # Resolve both files together so a requirements-only update cannot
107+ # silently leave CI exercising an incompatible older lockfile.
108+ run : pip install --require-hashes -r requirements.lock -r requirements.txt
84109
85110 # Discovery, not a loop over files: a file that stops being discoverable
86111 # should show up as a drop in the count rather than as silence. It used to
0 commit comments