Check the no-anchor tokens.css with the declaration reader
The footer and dropdown drives serve tokens.css with its anchor-positioning @supports condition rewritten to one no engine meets. The footer checked only that the text changed and the dropdown checked nothing, so a block spelt another way, or the condition's text sitting in a comment, would stay in force and the no-anchor legs would run with anchor positioning. tokensWithoutAnchorPositioning, shared by both, reads the stylesheet before and after: the block's declarations must sit under the real condition before, and under no position-area condition but the false one after. Mutation U5, counting the false condition as well, fails the dropdown drive with 50 declarations still under one, which shows the check reads the rewritten block. Both drives pass locally.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 files changed,
+38
−6
check/dropdown_browser_test.go+37 −1check/footer_browser_test.go+1 −5
CI passed — run details
CI log
=== gofmt ===
=== no-rastrillo ===
go test -run '^(TestFiestaNeverImportsRastrillo|TestThePublicPackagesLinkNoBrowser)$' -count=1 .
go: downloading go1.26.10 (linux/arm64)
ok amadan.net/rastrillo/fiesta 1.051s
=== size ===
go test ./internal/build -run '^TestTheOneLinkIsUnder25KiBGzipped$' -count=1 -v
=== RUN TestTheOneLinkIsUnder25KiBGzipped
build_test.go:138: fiesta-plain.css: 158347 bytes, 23104 bytes gzipped (22.6 KiB of the 25.0 KiB limit)
build_test.go:138: fiesta-signal.css: 158442 bytes, 23217 bytes gzipped (22.7 KiB of the 25.0 KiB limit)
build_test.go:138: fiesta.css: 161261 bytes, 23823 bytes gzipped (23.3 KiB of the 25.0 KiB limit)
--- PASS: TestTheOneLinkIsUnder25KiBGzipped (0.02s)
PASS
ok amadan.net/rastrillo/fiesta/internal/build 0.025s
=== history ===
history: 52 commits; release tags: v1.0.0
=== suite ===
--- shard 0 of 48 ---
==> shard 0 of 48: make root
go build ./...
go vet ./...
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh root 'internal/gallery@3 cmd/fiesta@2 internal/www@2'
ok amadan.net/rastrillo/fiesta 4.704s
ok amadan.net/rastrillo/fiesta/check 9.314s
ok amadan.net/rastrillo/fiesta/example 0.451s
? amadan.net/rastrillo/fiesta/hack/seed/english [no test files]
ok amadan.net/rastrillo/fiesta/internal/axe 0.257s
ok amadan.net/rastrillo/fiesta/internal/build 2.094s
ok amadan.net/rastrillo/fiesta/internal/codeview 0.014s
? amadan.net/rastrillo/fiesta/internal/harness [no test files]
ok amadan.net/rastrillo/fiesta/internal/markup 0.013s
ok amadan.net/rastrillo/fiesta/internal/nodetest 0.552s
ok amadan.net/rastrillo/fiesta/internal/rowrule 0.039s
ok amadan.net/rastrillo/fiesta/internal/site 4.131s
ok amadan.net/rastrillo/fiesta/internal/tokens 0.031s
suite: root took 38s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m24.160000s 0m4.640000s
--- shard 1 of 48 ---
==> shard 1 of 48: make test.internal.gallery~1of3
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.gallery~1of3'
gotest: slice 1 of 3 of ./internal/gallery/ runs 36 of 108 test tests
ok amadan.net/rastrillo/fiesta/internal/gallery 72.103s
suite: test.internal.gallery~1of3 took 91s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m52.850000s 0m1.710000s
--- shard 2 of 48 ---
==> shard 2 of 48: make test.internal.gallery~2of3
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.gallery~2of3'
gotest: slice 2 of 3 of ./internal/gallery/ runs 36 of 108 test tests
ok amadan.net/rastrillo/fiesta/internal/gallery 74.148s
suite: test.internal.gallery~2of3 took 93s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m55.150000s 0m1.910000s
--- shard 3 of 48 ---
==> shard 3 of 48: make test.internal.gallery~3of3
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.gallery~3of3'
gotest: slice 3 of 3 of ./internal/gallery/ runs 36 of 108 test tests
ok amadan.net/rastrillo/fiesta/internal/gallery 68.232s
suite: test.internal.gallery~3of3 took 87s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m49.520000s 0m1.710000s
--- shard 4 of 48 ---
==> shard 4 of 48: make test.cmd.fiesta~1of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'cmd.fiesta~1of2'
gotest: slice 1 of 2 of ./cmd/fiesta/ runs 7 of 12 test tests
ok amadan.net/rastrillo/fiesta/cmd/fiesta 56.286s
suite: test.cmd.fiesta~1of2 took 74s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m35.970000s 0m2.580000s
--- shard 5 of 48 ---
==> shard 5 of 48: make test.cmd.fiesta~2of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'cmd.fiesta~2of2'
gotest: slice 2 of 2 of ./cmd/fiesta/ runs 5 of 12 test tests
ok amadan.net/rastrillo/fiesta/cmd/fiesta 60.361s
suite: test.cmd.fiesta~2of2 took 79s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m39.000000s 0m3.020000s
--- shard 6 of 48 ---
==> shard 6 of 48: make test.internal.www~1of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.www~1of2'
gotest: slice 1 of 2 of ./internal/www/ runs 11 of 25 test tests
ok amadan.net/rastrillo/fiesta/internal/www 66.329s
suite: test.internal.www~1of2 took 92s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m59.950000s 0m3.290000s
--- shard 7 of 48 ---
==> shard 7 of 48: make test.internal.www~2of2
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 FIESTA_TEST_REQUIRE_TAGS=1 ./hack/gotest.sh test 'internal.www~2of2'
gotest: slice 2 of 2 of ./internal/www/ runs 14 of 25 test tests
ok amadan.net/rastrillo/fiesta/internal/www 63.409s
suite: test.internal.www~2of2 took 89s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m55.890000s 0m2.800000s
--- shard 8 of 48 ---
==> shard 8 of 48: make staticcheck
go run honnef.co/go/tools/cmd/staticcheck@v0.8.2 -tags browser ./...
go: downloading honnef.co/go/tools v0.8.2
go: downloading golang.org/x/tools v0.51.0
go: downloading github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c
go: downloading golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678
go: downloading golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa
suite: staticcheck took 43s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m40.140000s 0m5.180000s
--- shard 9 of 48 ---
==> shard 9 of 48: make govulncheck
go run golang.org/x/vuln/cmd/govulncheck@v1.8.0 ./...
go: downloading golang.org/x/vuln v1.8.0
go: downloading golang.org/x/telemetry v0.0.0-20260908163034-4bcc4b2ee518
go: downloading golang.org/x/tools v0.50.0
go: downloading golang.org/x/mod v0.41.0
go: downloading golang.org/x/sync v0.23.0
=== Symbol Results ===
No vulnerabilities found.
Your code is affected by 0 vulnerabilities.
This scan also found 2 vulnerabilities in packages you import and 5
vulnerabilities in modules you require, but your code doesn't appear to call
these vulnerabilities.
Use '-show verbose' for more details.
suite: govulncheck took 32s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m17.480000s 0m2.370000s
--- shard 10 of 48 ---
==> shard 10 of 48: make gitleaks
go run github.com/zricethezav/gitleaks/v8@v8.30.1 git --no-banner --redact --log-opts='--full-history --diff-filter=tuxdb HEAD' .
go: downloading github.com/zricethezav/gitleaks/v8 v8.30.1
go: downloading github.com/rs/zerolog v1.33.0
go: downloading github.com/gitleaks/go-gitdiff v0.9.1
go: downloading github.com/spf13/cobra v1.9.1
go: downloading github.com/Masterminds/sprig/v3 v3.3.0
go: downloading github.com/charmbracelet/lipgloss v0.5.0
go: downloading github.com/BobuSumisu/aho-corasick v1.0.3
go: downloading github.com/hashicorp/go-version v1.7.0
go: downloading github.com/mholt/archives v0.1.2
go: downloading golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa
go: downloading github.com/spf13/viper v1.19.0
go: downloading github.com/fatih/semgroup v1.2.0
go: downloading github.com/h2non/filetype v1.1.3
go: downloading golang.org/x/sync v0.11.0
go: downloading github.com/mattn/go-colorable v0.1.14
go: downloading github.com/muesli/termenv v0.15.1
go: downloading github.com/lucasb-eyer/go-colorful v1.2.0
go: downloading github.com/mattn/go-runewidth v0.0.14
go: downloading github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68
go: downloading github.com/huandu/xstrings v1.5.0
go: downloading github.com/spf13/pflag v1.0.6
go: downloading github.com/Masterminds/goutils v1.1.1
go: downloading dario.cat/mergo v1.0.1
go: downloading github.com/spf13/cast v1.7.1
go: downloading github.com/mitchellh/copystructure v1.2.0
go: downloading github.com/shopspring/decimal v1.4.0
go: downloading golang.org/x/crypto v0.35.0
go: downloading github.com/Masterminds/semver/v3 v3.3.0
go: downloading github.com/google/uuid v1.6.0
go: downloading github.com/sagikazarmark/slog-shim v0.1.0
go: downloading github.com/fsnotify/fsnotify v1.8.0
go: downloading github.com/mitchellh/mapstructure v1.5.0
go: downloading github.com/spf13/afero v1.12.0
go: downloading github.com/hashicorp/hcl v1.0.0
go: downloading gopkg.in/ini.v1 v1.67.0
go: downloading github.com/magiconair/properties v1.8.9
go: downloading github.com/pelletier/go-toml/v2 v2.2.3
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading github.com/subosito/gotenv v1.6.0
go: downloading github.com/STARRY-S/zip v0.2.1
go: downloading github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3
go: downloading github.com/bodgit/sevenzip v1.6.0
go: downloading github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707
go: downloading github.com/klauspost/compress v1.17.11
go: downloading github.com/klauspost/pgzip v1.2.6
go: downloading github.com/minio/minlz v1.0.0
go: downloading github.com/nwaples/rardecode/v2 v2.1.0
go: downloading github.com/pierrec/lz4/v4 v4.1.21
go: downloading github.com/sorairolake/lzip-go v0.3.5
go: downloading github.com/therootcompany/xz v1.0.1
go: downloading github.com/ulikunitz/xz v0.5.12
go: downloading golang.org/x/text v0.22.0
go: downloading github.com/rivo/uniseg v0.2.0
go: downloading github.com/mattn/go-isatty v0.0.20
go: downloading github.com/mitchellh/reflectwalk v1.0.2
go: downloading github.com/aymanbagabas/go-osc52/v2 v2.0.1
go: downloading golang.org/x/sys v0.30.0
go: downloading github.com/bodgit/windows v1.0.1
go: downloading github.com/bodgit/plumbing v1.3.0
go: downloading github.com/hashicorp/go-multierror v1.1.1
go: downloading go4.org v0.0.0-20230225012048-214862532bf5
go: downloading github.com/hashicorp/golang-lru/v2 v2.0.7
go: downloading github.com/hashicorp/errwrap v1.1.0
[90m1:18PM[0m [32mINF[0m [1mUnknown SCM platform. Use --platform to include links in findings.[0m [36mhost=[0mamadan.net
[90m1:18PM[0m [32mINF[0m [1m52 commits scanned.[0m
[90m1:18PM[0m [32mINF[0m [1mscanned ~9391877 bytes (9.39 MB) in 3.09s[0m
[90m1:18PM[0m [32mINF[0m [1mno leaks found[0m
suite: gitleaks took 34s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m30.380000s 0m3.670000s
--- shard 11 of 48 ---
==> shard 11 of 48: make browser.internal.harness
./hack/gotest.sh browser 'internal.harness'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: ./internal/harness/ runs its 10 browser tests
ok amadan.net/rastrillo/fiesta/internal/harness 6.641s
suite: browser.internal.harness took 34s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m19.070000s 0m4.180000s
--- shard 12 of 48 ---
==> shard 12 of 48: make browser.check~1of13
./hack/gotest.sh browser 'check~1of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 1 of 13 of ./check/ runs 17 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 89.173s
suite: browser.check~1of13 took 123s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m1.010000s 0m15.590000s
--- shard 13 of 48 ---
==> shard 13 of 48: make browser.check~2of13
./hack/gotest.sh browser 'check~2of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 2 of 13 of ./check/ runs 17 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 99.340s
suite: browser.check~2of13 took 134s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m6.910000s 0m17.320000s
--- shard 14 of 48 ---
==> shard 14 of 48: make browser.check~3of13
./hack/gotest.sh browser 'check~3of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 3 of 13 of ./check/ runs 16 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 89.919s
suite: browser.check~3of13 took 124s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m57.570000s 0m14.510000s
--- shard 15 of 48 ---
==> shard 15 of 48: make browser.check~4of13
./hack/gotest.sh browser 'check~4of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 4 of 13 of ./check/ runs 16 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 90.493s
suite: browser.check~4of13 took 125s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m10.320000s 0m19.360000s
--- shard 16 of 48 ---
==> shard 16 of 48: make browser.check~5of13
./hack/gotest.sh browser 'check~5of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 5 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 81.283s
suite: browser.check~5of13 took 115s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m54.180000s 0m16.190000s
--- shard 17 of 48 ---
==> shard 17 of 48: make browser.check~6of13
./hack/gotest.sh browser 'check~6of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 6 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 84.897s
suite: browser.check~6of13 took 119s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m58.580000s 0m18.210000s
--- shard 18 of 48 ---
==> shard 18 of 48: make browser.check~7of13
./hack/gotest.sh browser 'check~7of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 7 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 83.282s
suite: browser.check~7of13 took 118s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m0.000000s 0m16.560000s
--- shard 19 of 48 ---
==> shard 19 of 48: make browser.check~8of13
./hack/gotest.sh browser 'check~8of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 8 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 90.397s
suite: browser.check~8of13 took 125s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m57.720000s 0m16.920000s
--- shard 20 of 48 ---
==> shard 20 of 48: make browser.check~9of13
./hack/gotest.sh browser 'check~9of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 9 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 76.811s
suite: browser.check~9of13 took 111s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m43.990000s 0m11.900000s
--- shard 21 of 48 ---
==> shard 21 of 48: make browser.check~10of13
./hack/gotest.sh browser 'check~10of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 10 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 83.067s
suite: browser.check~10of13 took 117s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m53.910000s 0m14.710000s
--- shard 22 of 48 ---
==> shard 22 of 48: make browser.check~11of13
./hack/gotest.sh browser 'check~11of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 11 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 82.084s
suite: browser.check~11of13 took 116s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m55.010000s 0m15.190000s
--- shard 23 of 48 ---
==> shard 23 of 48: make browser.check~12of13
./hack/gotest.sh browser 'check~12of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 12 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 87.390s
suite: browser.check~12of13 took 122s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m58.050000s 0m16.720000s
--- shard 24 of 48 ---
==> shard 24 of 48: make browser.check~13of13
./hack/gotest.sh browser 'check~13of13'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: slice 13 of 13 of ./check/ runs 18 of 228 browser tests
ok amadan.net/rastrillo/fiesta/check 82.021s
suite: browser.check~13of13 took 116s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m52.190000s 0m14.140000s
--- shard 25 of 48 ---
==> shard 25 of 48: make browser.internal.gallery~1of18
./hack/gotest.sh browser 'internal.gallery~1of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 1 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 40.501s
suite: browser.internal.gallery~1of18 took 73s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m34.290000s 0m6.540000s
--- shard 26 of 48 ---
==> shard 26 of 48: make browser.internal.gallery~2of18
./hack/gotest.sh browser 'internal.gallery~2of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 2 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 51.625s
suite: browser.internal.gallery~2of18 took 83s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m30.710000s 0m5.090000s
--- shard 27 of 48 ---
==> shard 27 of 48: make browser.internal.gallery~3of18
./hack/gotest.sh browser 'internal.gallery~3of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 3 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 60.504s
suite: browser.internal.gallery~3of18 took 93s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m31.080000s 0m5.890000s
--- shard 28 of 48 ---
==> shard 28 of 48: make browser.internal.gallery~4of18
./hack/gotest.sh browser 'internal.gallery~4of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 4 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 50.306s
suite: browser.internal.gallery~4of18 took 83s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m28.140000s 0m4.610000s
--- shard 29 of 48 ---
==> shard 29 of 48: make browser.internal.gallery~5of18
./hack/gotest.sh browser 'internal.gallery~5of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 5 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 62.552s
suite: browser.internal.gallery~5of18 took 96s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m34.940000s 0m7.540000s
--- shard 30 of 48 ---
==> shard 30 of 48: make browser.internal.gallery~6of18
./hack/gotest.sh browser 'internal.gallery~6of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 6 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 56.818s
suite: browser.internal.gallery~6of18 took 90s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m30.850000s 0m5.770000s
--- shard 31 of 48 ---
==> shard 31 of 48: make browser.internal.gallery~7of18
./hack/gotest.sh browser 'internal.gallery~7of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 7 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 57.613s
suite: browser.internal.gallery~7of18 took 90s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m29.270000s 0m4.550000s
--- shard 32 of 48 ---
==> shard 32 of 48: make browser.internal.gallery~8of18
./hack/gotest.sh browser 'internal.gallery~8of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 8 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 61.158s
suite: browser.internal.gallery~8of18 took 93s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m32.960000s 0m6.790000s
--- shard 33 of 48 ---
==> shard 33 of 48: make browser.internal.gallery~9of18
./hack/gotest.sh browser 'internal.gallery~9of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 9 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 69.239s
suite: browser.internal.gallery~9of18 took 102s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m39.380000s 0m9.710000s
--- shard 34 of 48 ---
==> shard 34 of 48: make browser.internal.gallery~10of18
./hack/gotest.sh browser 'internal.gallery~10of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 10 of 18 of ./internal/gallery/ runs 2 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 65.109s
suite: browser.internal.gallery~10of18 took 97s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m28.910000s 0m4.570000s
--- shard 35 of 48 ---
==> shard 35 of 48: make browser.internal.gallery~11of18
./hack/gotest.sh browser 'internal.gallery~11of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 11 of 18 of ./internal/gallery/ runs 2 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 65.725s
suite: browser.internal.gallery~11of18 took 98s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m29.590000s 0m4.920000s
--- shard 36 of 48 ---
==> shard 36 of 48: make browser.internal.gallery~12of18
./hack/gotest.sh browser 'internal.gallery~12of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 12 of 18 of ./internal/gallery/ runs 2 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 68.463s
suite: browser.internal.gallery~12of18 took 101s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m34.200000s 0m7.110000s
--- shard 37 of 48 ---
==> shard 37 of 48: make browser.internal.gallery~13of18
./hack/gotest.sh browser 'internal.gallery~13of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 13 of 18 of ./internal/gallery/ runs 4 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 68.546s
suite: browser.internal.gallery~13of18 took 101s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m34.990000s 0m7.390000s
--- shard 38 of 48 ---
==> shard 38 of 48: make browser.internal.gallery~14of18
./hack/gotest.sh browser 'internal.gallery~14of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 14 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 70.350s
suite: browser.internal.gallery~14of18 took 103s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m32.010000s 0m6.830000s
--- shard 39 of 48 ---
==> shard 39 of 48: make browser.internal.gallery~15of18
./hack/gotest.sh browser 'internal.gallery~15of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 15 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 70.678s
suite: browser.internal.gallery~15of18 took 103s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m35.210000s 0m7.740000s
--- shard 40 of 48 ---
==> shard 40 of 48: make browser.internal.gallery~16of18
./hack/gotest.sh browser 'internal.gallery~16of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 16 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 65.413s
suite: browser.internal.gallery~16of18 took 98s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m30.250000s 0m6.160000s
--- shard 41 of 48 ---
==> shard 41 of 48: make browser.internal.gallery~17of18
./hack/gotest.sh browser 'internal.gallery~17of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 17 of 18 of ./internal/gallery/ runs 5 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 69.005s
suite: browser.internal.gallery~17of18 took 102s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m32.620000s 0m7.230000s
--- shard 42 of 48 ---
==> shard 42 of 48: make browser.internal.gallery~18of18
./hack/gotest.sh browser 'internal.gallery~18of18'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 18 of 18 of ./internal/gallery/ runs 6 of 84 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery 71.768s
suite: browser.internal.gallery~18of18 took 104s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m38.920000s 0m8.790000s
--- shard 43 of 48 ---
==> shard 43 of 48: make browser.internal.gallery.history
./hack/gotest.sh browser 'internal.gallery.history'
gotest: on ip-172-31-16-172, driving /opt/amadan-browser/chromium-1234/chrome-linux/chrome
gotest: ./internal/gallery/history/ runs its 3 browser tests
ok amadan.net/rastrillo/fiesta/internal/gallery/history 34.566s
suite: browser.internal.gallery.history took 63s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m35.070000s 0m3.550000s
--- shard 44 of 48 ---
==> shard 44 of 48: make browser.internal.www~1of4
./hack/gotest.sh browser 'internal.www~1of4'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 1 of 4 of ./internal/www/ runs 5 of 24 browser tests
ok amadan.net/rastrillo/fiesta/internal/www 80.509s
suite: browser.internal.www~1of4 took 111s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
0m55.580000s 0m4.560000s
--- shard 45 of 48 ---
==> shard 45 of 48: make browser.internal.www~2of4
./hack/gotest.sh browser 'internal.www~2of4'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 2 of 4 of ./internal/www/ runs 7 of 24 browser tests
ok amadan.net/rastrillo/fiesta/internal/www 80.715s
suite: browser.internal.www~2of4 took 111s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m9.390000s 0m5.400000s
--- shard 46 of 48 ---
==> shard 46 of 48: make browser.internal.www~3of4
./hack/gotest.sh browser 'internal.www~3of4'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 3 of 4 of ./internal/www/ runs 6 of 24 browser tests
ok amadan.net/rastrillo/fiesta/internal/www 83.006s
suite: browser.internal.www~3of4 took 113s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m8.880000s 0m5.220000s
--- shard 47 of 48 ---
==> shard 47 of 48: make browser.internal.www~4of4
./hack/gotest.sh browser 'internal.www~4of4'
gotest: on ip-172-31-16-172, driving the harness's own choice (/usr/local/bin/chromium)
gotest: slice 4 of 4 of ./internal/www/ runs 6 of 24 browser tests
ok amadan.net/rastrillo/fiesta/internal/www 82.059s
suite: browser.internal.www~4of4 took 112s; CPU, user then system, of this shell and then of the role:
0m0.000000s 0m0.000000s
1m6.020000s 0m5.900000s
Intent
diff --git a/check/dropdown_browser_test.go b/check/dropdown_browser_test.go| index 1c97d98..b28d088 100644 |
| --- a/check/dropdown_browser_test.go |
| +++ b/check/dropdown_browser_test.go |
| @@ -12,6 +12,7 @@ import ( |
| "fmt" |
| "math" |
| "net/http" |
| + "slices" |
| "strings" |
| "testing" |
| "time" |
| @@ -28,6 +29,41 @@ import ( |
| // before any script on the page. |
| const withoutAnchorSupport = `(() => { const s = CSS.supports.bind(CSS); CSS.supports = (...a) => !/position-area|position-try/.test(a.join(" ")) && s(...a); })()` |
| +// tokensWithoutAnchorPositioning is tokens.css as an engine without |
| +// anchor positioning applies it: the @supports block that places a |
| +// panel by its anchor has a condition no engine meets. The rewrite is |
| +// checked with the declaration reader, not by the text changing: the |
| +// block's declarations sit under the real condition before and under |
| +// no position-area condition but the false one after, so a block |
| +// spelt another way cannot stay in force and turn the no-anchor legs |
| +// into anchor ones. |
| +func tokensWithoutAnchorPositioning(t testing.TB) string { |
| + t.Helper() |
| + const real, never = "@supports (position-area: block-end) and (position-try-fallbacks: flip-block)", "@supports (position-area: rastrillo-no-such-value)" |
| + css := string(fiesta.TokensCSS()) |
| + under := func(css string, keep func(string) bool) int { |
| + decls, err := declarationsOf("tokens.css", css) |
| + if err != nil { |
| + t.Fatal(err) |
| + } |
| + n := 0 |
| + for _, d := range decls { |
| + if slices.ContainsFunc(strings.Split(d.Context, " > "), keep) { |
| + n++ |
| + } |
| + } |
| + return n |
| + } |
| + if under(css, func(c string) bool { return c == real }) == 0 { |
| + t.Fatal("tokens.css has no anchor-positioning block to take away; the no-anchor legs would test nothing") |
| + } |
| + out := strings.ReplaceAll(css, real, never) |
| + if n := under(out, func(c string) bool { return strings.Contains(c, "position-area") && c != never }); n != 0 { |
| + t.Fatalf("tokens.css without anchor positioning still has %d declarations under a position-area condition", n) |
| + } |
| + return out |
| +} |
| + |
| // TestADropdownOpensUnderItsOwnSummary: the panel hangs from the |
| // summary, wherever the <details> is put. It hung from the <details>, |
| // which in a block or a stretching flex column is as wide as its |
| @@ -167,7 +203,7 @@ func TestADropdownWithoutAnchorsOrScriptsStaysOnScreen(t *testing.T) { |
| pages["/"+name] = bare("ltr", menu) |
| pages["/rtl/"+name] = bare("rtl", menu) |
| } |
| - noAnchor := strings.ReplaceAll(string(fiesta.TokensCSS()), "@supports (position-area: block-end) and (position-try-fallbacks: flip-block)", "@supports (position-area: rastrillo-no-such-value)") |
| + noAnchor := tokensWithoutAnchorPositioning(t) |
| for _, leg := range []struct { |
| name string |
| w int64 |
diff --git a/check/footer_browser_test.go b/check/footer_browser_test.go| index 3608ced..0564ae5 100644 |
| --- a/check/footer_browser_test.go |
| +++ b/check/footer_browser_test.go |
| @@ -20,7 +20,6 @@ import ( |
| cdppage "github.com/chromedp/cdproto/page" |
| "github.com/chromedp/chromedp" |
| - "amadan.net/rastrillo/fiesta" |
| "amadan.net/rastrillo/fiesta/internal/harness" |
| ) |
| @@ -247,10 +246,7 @@ func labelled(t *testing.T, doc, lang, dir, language, scheme string) string { |
| // too, and under nothing it belongs to. |
| func TestTheFootersMenusOpenOnScreen(t *testing.T) { |
| doc := columnDoc(t) |
| - noAnchor := strings.ReplaceAll(string(fiesta.TokensCSS()), "@supports (position-area: block-end) and (position-try-fallbacks: flip-block)", "@supports (position-area: rastrillo-no-such-value)") |
| - if noAnchor == string(fiesta.TokensCSS()) { |
| - t.Fatal("tokens.css has no anchor-positioning block to take away; the no-anchor legs would test nothing") |
| - } |
| + noAnchor := tokensWithoutAnchorPositioning(t) |
| measure := sizingRig(t, false, map[string]string{"/measure": sizingDoc("measure", `<main rst-page></main>`)}) |
| mctx, mcancel := context.WithTimeout(measure.Context(), 30*time.Second) |
| lang, language, scheme := longestLabels(t, mctx, measure.Origin) |