t

From d081726d1ca487038c52d69fcdf30b20e42d3c5d Mon Sep 17 00:00:00 2001 From: Swapnil <78632212+swapnilpaliwal-sd@users.noreply.github.com> Date: Sat, 10 Oct 2026 14:51:00 -0700 Subject: [PATCH 001/132] web torture: independent oracle, runner and the first seven suites graph/test/web/oracle/ derives the ground truth for every web node and in-web edge kind from parse5, postcss, css-select and acorn (pinned in its package.json; the axiom parser is never imported). run-tests.sh builds each case's graph, normalizes the engine tables onto the oracle's rows (contract in tools/normalize.py) and gates the multiset diff with known-missing support; it fails with "engine not built" until graph/web/engine exists. 51 hand-written cases across nodes, cascade, refs, pages, js and crosslang, two generated scale cases; every expectation was read row by row and agrees with the oracle (--oracle). Refs #1908 --- graph/test/web/.gitattributes | 2 + .../cases/cascade/01-combinators/case.conf | 2 + .../cascade/01-combinators/src/index.html | 10 + .../cases/cascade/01-combinators/src/s.css | 6 + .../cascade/02-attribute-operators/case.conf | 2 + .../02-attribute-operators/src/index.html | 9 + .../cascade/02-attribute-operators/src/s.css | 12 + .../cascade/03-logical-pseudos/case.conf | 2 + .../cascade/03-logical-pseudos/src/index.html | 9 + .../cascade/03-logical-pseudos/src/s.css | 6 + .../cascade/04-structural-pseudos/case.conf | 2 + .../04-structural-pseudos/src/index.html | 9 + .../cascade/04-structural-pseudos/src/s.css | 11 + .../web/cases/cascade/05-nesting/case.conf | 2 + .../cases/cascade/05-nesting/src/index.html | 9 + .../web/cases/cascade/05-nesting/src/s.css | 9 + .../cascade/06-at-rule-conditions/case.conf | 2 + .../06-at-rule-conditions/src/index.html | 7 + .../06-at-rule-conditions/src/narrow.css | 1 + .../06-at-rule-conditions/src/print.css | 1 + .../cascade/06-at-rule-conditions/src/s.css | 5 + .../cases/cascade/07-state-pseudos/case.conf | 2 + .../cascade/07-state-pseudos/src/index.html | 9 + .../cases/cascade/07-state-pseudos/src/s.css | 13 + .../08-specificity-and-order/case.conf | 2 + .../src/framework.css | 3 + .../08-specificity-and-order/src/index.html | 12 + .../08-specificity-and-order/src/reset.css | 1 + .../08-specificity-and-order/src/theme.css | 2 + .../web/cases/cascade/09-layers/case.conf | 2 + .../cases/cascade/09-layers/src/index.html | 7 + .../web/cases/cascade/09-layers/src/s.css | 7 + .../cases/cascade/09-layers/src/vendor.css | 1 + .../cases/cascade/10-quirks-mode/case.conf | 2 + .../cascade/10-quirks-mode/src/quirks.html | 6 + .../cases/cascade/10-quirks-mode/src/s.css | 4 + .../cascade/10-quirks-mode/src/standards.html | 7 + .../11-dynamic-class-and-unmatched/case.conf | 2 + .../src/index.html | 9 + .../11-dynamic-class-and-unmatched/src/s.css | 6 + .../cascade/12-shadow-and-unparsed/case.conf | 2 + .../12-shadow-and-unparsed/src/index.html | 7 + .../cascade/12-shadow-and-unparsed/src/s.css | 6 + .../13-inert-template-noscript/case.conf | 2 + .../13-inert-template-noscript/src/index.html | 9 + .../13-inert-template-noscript/src/s.css | 4 + .../14-svg-case-and-namespaces/case.conf | 2 + .../14-svg-case-and-namespaces/src/index.html | 7 + .../14-svg-case-and-namespaces/src/s.css | 6 + .../cases/cascade/15-root-and-lang/case.conf | 2 + .../cascade/15-root-and-lang/src/bare.html | 3 + .../cascade/15-root-and-lang/src/full.html | 7 + .../cases/cascade/15-root-and-lang/src/s.css | 4 + .../cases/cascade/16-fragment-page/case.conf | 2 + .../16-fragment-page/src/partials/nav.html | 2 + .../cases/cascade/16-fragment-page/src/s.css | 1 + .../web/cases/crosslang/01-guard/case.conf | 3 + .../web/cases/crosslang/01-guard/src/app.js | 2 + .../cases/crosslang/01-guard/src/index.html | 11 + .../web/cases/crosslang/01-guard/src/s.css | 2 + .../js/01-inline-classic-and-module/case.conf | 2 + .../src/index.html | 21 + .../js/02-non-js-script-bodies/case.conf | 2 + .../js/02-non-js-script-bodies/src/index.html | 13 + .../web/cases/js/03-on-handlers/case.conf | 2 + .../cases/js/03-on-handlers/src/index.html | 13 + .../cases/js/04-dom-touch-vanilla/case.conf | 2 + .../js/04-dom-touch-vanilla/src/index.html | 9 + .../js/04-dom-touch-vanilla/src/js/app.js | 20 + .../cases/js/05-dom-touch-jquery/case.conf | 2 + .../js/05-dom-touch-jquery/src/index.html | 9 + .../js/05-dom-touch-jquery/src/js/main.js | 11 + .../05-dom-touch-jquery/src/js/vendor.min.js | 1 + .../js/06-external-js-functions/case.conf | 2 + .../06-external-js-functions/src/index.html | 9 + .../06-external-js-functions/src/js/site.js | 8 + .../src/js/site.min.js | 1 + .../nodes/01-void-and-self-closing/case.conf | 2 + .../01-void-and-self-closing/src/index.html | 10 + .../cases/nodes/02-implied-elements/case.conf | 2 + .../nodes/02-implied-elements/src/index.html | 7 + .../02-implied-elements/src/partial.html | 3 + .../nodes/03-template-svg-math/case.conf | 2 + .../nodes/03-template-svg-math/src/index.html | 8 + .../cases/nodes/04-iframe-srcdoc/case.conf | 2 + .../nodes/04-iframe-srcdoc/src/index.html | 7 + .../nodes/04-iframe-srcdoc/src/other.html | 1 + .../05-conditional-comments-cdata/case.conf | 2 + .../src/css/ie.css | 1 + .../src/index.html | 13 + .../src/js/app.js | 1 + .../src/js/html5shiv.js | 0 .../nodes/06-entities-in-class/case.conf | 2 + .../nodes/06-entities-in-class/src/index.html | 9 + .../cases/nodes/07-duplicate-ids/case.conf | 2 + .../nodes/07-duplicate-ids/src/index.html | 10 + .../nodes/08-uppercase-unquoted/case.conf | 2 + .../08-uppercase-unquoted/src/index.html | 7 + .../web/cases/nodes/09-bom-crlf/case.conf | 2 + .../cases/nodes/09-bom-crlf/src/css/bom.css | 3 + .../cases/nodes/09-bom-crlf/src/index.html | 11 + .../nodes/10-minified-one-line-css/case.conf | 2 + .../10-minified-one-line-css/src/index.html | 1 + .../src/vendor/lib.min.css | 1 + .../11-style-attr-and-style-element/case.conf | 2 + .../src/img/hero.png | 0 .../src/index.html | 13 + .../cases/nodes/12-css-node-kinds/case.conf | 2 + .../cases/nodes/12-css-node-kinds/src/app.css | 11 + .../nodes/12-css-node-kinds/src/index.html | 1 + .../web/cases/nodes/13-script-types/case.conf | 2 + .../nodes/13-script-types/src/index.html | 15 + .../cases/nodes/13-script-types/src/lib.js | 0 .../web/cases/nodes/13-script-types/src/m.js | 1 + .../web/cases/nodes/14-references/case.conf | 2 + .../cases/nodes/14-references/src/favicon.ico | 0 .../nodes/14-references/src/site/img/a.png | 0 .../nodes/14-references/src/site/img/p.jpg | 0 .../nodes/14-references/src/site/index.html | 17 + .../nodes/14-references/src/site/next.html | 1 + .../web/cases/nodes/14-references/src/up.html | 1 + .../nodes/15-template-dialects/case.conf | 2 + .../nodes/15-template-dialects/src/index.html | 9 + .../cases/nodes/16-selector-parts/case.conf | 2 + .../nodes/16-selector-parts/src/index.html | 1 + .../cases/nodes/16-selector-parts/src/s.css | 2 + .../pages/01-shared-stylesheet/case.conf | 2 + .../pages/01-shared-stylesheet/src/about.html | 9 + .../01-shared-stylesheet/src/css/theme.css | 3 + .../pages/01-shared-stylesheet/src/index.html | 9 + .../pages/02-anchors-forms-iframes/case.conf | 2 + .../src/demo/frame.html | 9 + .../src/docs/guide.html | 9 + .../src/docs/index.html | 9 + .../02-anchors-forms-iframes/src/index.html | 18 + .../web/cases/pages/03-import-chain/case.conf | 2 + .../pages/03-import-chain/src/index.html | 9 + .../pages/03-import-chain/src/themes/all.css | 3 + .../pages/03-import-chain/src/themes/base.css | 2 + .../pages/03-import-chain/src/themes/core.css | 1 + .../03-import-chain/src/themes/cycle.css | 2 + .../03-import-chain/src/themes/theme.css | 2 + .../cases/pages/04-include-partials/case.conf | 2 + .../04-include-partials/src/src/css/style.css | 2 + .../04-include-partials/src/src/index.html | 10 + .../src/src/partials/sidebar.html | 1 + .../01-var-chains-and-fallbacks/case.conf | 2 + .../src/index.html | 9 + .../01-var-chains-and-fallbacks/src/s.css | 2 + .../refs/02-var-inheritance-scope/case.conf | 2 + .../02-var-inheritance-scope/src/index.html | 9 + .../refs/02-var-inheritance-scope/src/s.css | 5 + .../web/cases/refs/03-property-rule/case.conf | 2 + .../refs/03-property-rule/src/index.html | 9 + .../web/cases/refs/03-property-rule/src/s.css | 2 + .../refs/04-keyframes-and-vendor/case.conf | 2 + .../04-keyframes-and-vendor/src/index.html | 9 + .../refs/04-keyframes-and-vendor/src/s.css | 6 + .../refs/05-font-face-and-generic/case.conf | 2 + .../src/fonts/brand.woff2 | 0 .../05-font-face-and-generic/src/index.html | 9 + .../refs/05-font-face-and-generic/src/s.css | 5 + .../cases/refs/06-url-resolution/case.conf | 2 + .../refs/06-url-resolution/src/app/css/s.css | 3 + .../06-url-resolution/src/app/img/logo.png | 0 .../src/app/pages/index.html | 10 + .../cases/refs/07-container-names/case.conf | 2 + .../refs/07-container-names/src/index.html | 9 + .../cases/refs/07-container-names/src/s.css | 5 + .../08-loads-unknowns-and-orphans/case.conf | 2 + .../src/css/dark.css | 1 + .../src/css/main.css | 3 + .../src/css/unused.css | 1 + .../src/dist/app.css | 1 + .../src/index.html | 13 + .../scale/01-2k-pages-50k-rules/case.conf | 7 + .../cases/scale/02-styles-200-pages/case.conf | 7 + .../web/expected/cascade/01-combinators.tsv | 15 + .../cascade/02-attribute-operators.tsv | 14 + .../expected/cascade/03-logical-pseudos.tsv | 19 + .../cascade/04-structural-pseudos.tsv | 19 + .../test/web/expected/cascade/05-nesting.tsv | 18 + .../cascade/06-at-rule-conditions.tsv | 15 + .../web/expected/cascade/07-state-pseudos.tsv | 21 + .../cascade/08-specificity-and-order.tsv | 15 + graph/test/web/expected/cascade/09-layers.tsv | 13 + .../web/expected/cascade/10-quirks-mode.tsv | 11 + .../11-dynamic-class-and-unmatched.tsv | 9 + .../cascade/12-shadow-and-unparsed.tsv | 10 + .../cascade/13-inert-template-noscript.tsv | 9 + .../cascade/14-svg-case-and-namespaces.tsv | 7 + .../web/expected/cascade/15-root-and-lang.tsv | 12 + .../web/expected/cascade/16-fragment-page.tsv | 5 + .../test/web/expected/crosslang/01-guard.tsv | 10 + .../js/01-inline-classic-and-module.tsv | 13 + .../expected/js/02-non-js-script-bodies.tsv | 10 + graph/test/web/expected/js/03-on-handlers.tsv | 12 + .../web/expected/js/04-dom-touch-vanilla.tsv | 23 + .../web/expected/js/05-dom-touch-jquery.tsv | 19 + .../expected/js/06-external-js-functions.tsv | 10 + .../nodes/01-void-and-self-closing.tsv | 23 + .../expected/nodes/02-implied-elements.tsv | 25 + .../expected/nodes/03-template-svg-math.tsv | 37 + .../web/expected/nodes/04-iframe-srcdoc.tsv | 12 + .../nodes/05-conditional-comments-cdata.tsv | 12 + .../expected/nodes/06-entities-in-class.tsv | 14 + .../web/expected/nodes/07-duplicate-ids.tsv | 11 + .../expected/nodes/08-uppercase-unquoted.tsv | 15 + graph/test/web/expected/nodes/09-bom-crlf.tsv | 11 + .../nodes/10-minified-one-line-css.tsv | 805 ++++++++++++++++++ .../nodes/11-style-attr-and-style-element.tsv | 16 + .../web/expected/nodes/12-css-node-kinds.tsv | 33 + .../web/expected/nodes/13-script-types.tsv | 12 + .../test/web/expected/nodes/14-references.tsv | 17 + .../expected/nodes/15-template-dialects.tsv | 13 + .../web/expected/nodes/16-selector-parts.tsv | 22 + .../expected/pages/01-shared-stylesheet.tsv | 9 + .../pages/02-anchors-forms-iframes.tsv | 13 + .../web/expected/pages/03-import-chain.tsv | 18 + .../expected/pages/04-include-partials.tsv | 9 + .../refs/01-var-chains-and-fallbacks.tsv | 18 + .../refs/02-var-inheritance-scope.tsv | 6 + .../web/expected/refs/03-property-rule.tsv | 7 + .../expected/refs/04-keyframes-and-vendor.tsv | 17 + .../refs/05-font-face-and-generic.tsv | 13 + .../web/expected/refs/06-url-resolution.tsv | 11 + .../web/expected/refs/07-container-names.tsv | 9 + .../refs/08-loads-unknowns-and-orphans.tsv | 13 + graph/test/web/run-tests.sh | 166 ++++ graph/test/web/tools/crosslang_guard.py | 74 ++ graph/test/web/tools/gate.py | 59 ++ graph/test/web/tools/gen_scale.py | 43 + graph/test/web/tools/normalize.py | 257 ++++++ 233 files changed, 2999 insertions(+) create mode 100644 graph/test/web/.gitattributes create mode 100644 graph/test/web/cases/cascade/01-combinators/case.conf create mode 100644 graph/test/web/cases/cascade/01-combinators/src/index.html create mode 100644 graph/test/web/cases/cascade/01-combinators/src/s.css create mode 100644 graph/test/web/cases/cascade/02-attribute-operators/case.conf create mode 100644 graph/test/web/cases/cascade/02-attribute-operators/src/index.html create mode 100644 graph/test/web/cases/cascade/02-attribute-operators/src/s.css create mode 100644 graph/test/web/cases/cascade/03-logical-pseudos/case.conf create mode 100644 graph/test/web/cases/cascade/03-logical-pseudos/src/index.html create mode 100644 graph/test/web/cases/cascade/03-logical-pseudos/src/s.css create mode 100644 graph/test/web/cases/cascade/04-structural-pseudos/case.conf create mode 100644 graph/test/web/cases/cascade/04-structural-pseudos/src/index.html create mode 100644 graph/test/web/cases/cascade/04-structural-pseudos/src/s.css create mode 100644 graph/test/web/cases/cascade/05-nesting/case.conf create mode 100644 graph/test/web/cases/cascade/05-nesting/src/index.html create mode 100644 graph/test/web/cases/cascade/05-nesting/src/s.css create mode 100644 graph/test/web/cases/cascade/06-at-rule-conditions/case.conf create mode 100644 graph/test/web/cases/cascade/06-at-rule-conditions/src/index.html create mode 100644 graph/test/web/cases/cascade/06-at-rule-conditions/src/narrow.css create mode 100644 graph/test/web/cases/cascade/06-at-rule-conditions/src/print.css create mode 100644 graph/test/web/cases/cascade/06-at-rule-conditions/src/s.css create mode 100644 graph/test/web/cases/cascade/07-state-pseudos/case.conf create mode 100644 graph/test/web/cases/cascade/07-state-pseudos/src/index.html create mode 100644 graph/test/web/cases/cascade/07-state-pseudos/src/s.css create mode 100644 graph/test/web/cases/cascade/08-specificity-and-order/case.conf create mode 100644 graph/test/web/cases/cascade/08-specificity-and-order/src/framework.css create mode 100644 graph/test/web/cases/cascade/08-specificity-and-order/src/index.html create mode 100644 graph/test/web/cases/cascade/08-specificity-and-order/src/reset.css create mode 100644 graph/test/web/cases/cascade/08-specificity-and-order/src/theme.css create mode 100644 graph/test/web/cases/cascade/09-layers/case.conf create mode 100644 graph/test/web/cases/cascade/09-layers/src/index.html create mode 100644 graph/test/web/cases/cascade/09-layers/src/s.css create mode 100644 graph/test/web/cases/cascade/09-layers/src/vendor.css create mode 100644 graph/test/web/cases/cascade/10-quirks-mode/case.conf create mode 100644 graph/test/web/cases/cascade/10-quirks-mode/src/quirks.html create mode 100644 graph/test/web/cases/cascade/10-quirks-mode/src/s.css create mode 100644 graph/test/web/cases/cascade/10-quirks-mode/src/standards.html create mode 100644 graph/test/web/cases/cascade/11-dynamic-class-and-unmatched/case.conf create mode 100644 graph/test/web/cases/cascade/11-dynamic-class-and-unmatched/src/index.html create mode 100644 graph/test/web/cases/cascade/11-dynamic-class-and-unmatched/src/s.css create mode 100644 graph/test/web/cases/cascade/12-shadow-and-unparsed/case.conf create mode 100644 graph/test/web/cases/cascade/12-shadow-and-unparsed/src/index.html create mode 100644 graph/test/web/cases/cascade/12-shadow-and-unparsed/src/s.css create mode 100644 graph/test/web/cases/cascade/13-inert-template-noscript/case.conf create mode 100644 graph/test/web/cases/cascade/13-inert-template-noscript/src/index.html create mode 100644 graph/test/web/cases/cascade/13-inert-template-noscript/src/s.css create mode 100644 graph/test/web/cases/cascade/14-svg-case-and-namespaces/case.conf create mode 100644 graph/test/web/cases/cascade/14-svg-case-and-namespaces/src/index.html create mode 100644 graph/test/web/cases/cascade/14-svg-case-and-namespaces/src/s.css create mode 100644 graph/test/web/cases/cascade/15-root-and-lang/case.conf create mode 100644 graph/test/web/cases/cascade/15-root-and-lang/src/bare.html create mode 100644 graph/test/web/cases/cascade/15-root-and-lang/src/full.html create mode 100644 graph/test/web/cases/cascade/15-root-and-lang/src/s.css create mode 100644 graph/test/web/cases/cascade/16-fragment-page/case.conf create mode 100644 graph/test/web/cases/cascade/16-fragment-page/src/partials/nav.html create mode 100644 graph/test/web/cases/cascade/16-fragment-page/src/s.css create mode 100644 graph/test/web/cases/crosslang/01-guard/case.conf create mode 100644 graph/test/web/cases/crosslang/01-guard/src/app.js create mode 100644 graph/test/web/cases/crosslang/01-guard/src/index.html create mode 100644 graph/test/web/cases/crosslang/01-guard/src/s.css create mode 100644 graph/test/web/cases/js/01-inline-classic-and-module/case.conf create mode 100644 graph/test/web/cases/js/01-inline-classic-and-module/src/index.html create mode 100644 graph/test/web/cases/js/02-non-js-script-bodies/case.conf create mode 100644 graph/test/web/cases/js/02-non-js-script-bodies/src/index.html create mode 100644 graph/test/web/cases/js/03-on-handlers/case.conf create mode 100644 graph/test/web/cases/js/03-on-handlers/src/index.html create mode 100644 graph/test/web/cases/js/04-dom-touch-vanilla/case.conf create mode 100644 graph/test/web/cases/js/04-dom-touch-vanilla/src/index.html create mode 100644 graph/test/web/cases/js/04-dom-touch-vanilla/src/js/app.js create mode 100644 graph/test/web/cases/js/05-dom-touch-jquery/case.conf create mode 100644 graph/test/web/cases/js/05-dom-touch-jquery/src/index.html create mode 100644 graph/test/web/cases/js/05-dom-touch-jquery/src/js/main.js create mode 100644 graph/test/web/cases/js/05-dom-touch-jquery/src/js/vendor.min.js create mode 100644 graph/test/web/cases/js/06-external-js-functions/case.conf create mode 100644 graph/test/web/cases/js/06-external-js-functions/src/index.html create mode 100644 graph/test/web/cases/js/06-external-js-functions/src/js/site.js create mode 100644 graph/test/web/cases/js/06-external-js-functions/src/js/site.min.js create mode 100644 graph/test/web/cases/nodes/01-void-and-self-closing/case.conf create mode 100644 graph/test/web/cases/nodes/01-void-and-self-closing/src/index.html create mode 100644 graph/test/web/cases/nodes/02-implied-elements/case.conf create mode 100644 graph/test/web/cases/nodes/02-implied-elements/src/index.html create mode 100644 graph/test/web/cases/nodes/02-implied-elements/src/partial.html create mode 100644 graph/test/web/cases/nodes/03-template-svg-math/case.conf create mode 100644 graph/test/web/cases/nodes/03-template-svg-math/src/index.html create mode 100644 graph/test/web/cases/nodes/04-iframe-srcdoc/case.conf create mode 100644 graph/test/web/cases/nodes/04-iframe-srcdoc/src/index.html create mode 100644 graph/test/web/cases/nodes/04-iframe-srcdoc/src/other.html create mode 100644 graph/test/web/cases/nodes/05-conditional-comments-cdata/case.conf create mode 100644 graph/test/web/cases/nodes/05-conditional-comments-cdata/src/css/ie.css create mode 100644 graph/test/web/cases/nodes/05-conditional-comments-cdata/src/index.html create mode 100644 graph/test/web/cases/nodes/05-conditional-comments-cdata/src/js/app.js create mode 100644 graph/test/web/cases/nodes/05-conditional-comments-cdata/src/js/html5shiv.js create mode 100644 graph/test/web/cases/nodes/06-entities-in-class/case.conf create mode 100644 graph/test/web/cases/nodes/06-entities-in-class/src/index.html create mode 100644 graph/test/web/cases/nodes/07-duplicate-ids/case.conf create mode 100644 graph/test/web/cases/nodes/07-duplicate-ids/src/index.html create mode 100644 graph/test/web/cases/nodes/08-uppercase-unquoted/case.conf create mode 100644 graph/test/web/cases/nodes/08-uppercase-unquoted/src/index.html create mode 100644 graph/test/web/cases/nodes/09-bom-crlf/case.conf create mode 100644 graph/test/web/cases/nodes/09-bom-crlf/src/css/bom.css create mode 100644 graph/test/web/cases/nodes/09-bom-crlf/src/index.html create mode 100644 graph/test/web/cases/nodes/10-minified-one-line-css/case.conf create mode 100644 graph/test/web/cases/nodes/10-minified-one-line-css/src/index.html create mode 100644 graph/test/web/cases/nodes/10-minified-one-line-css/src/vendor/lib.min.css create mode 100644 graph/test/web/cases/nodes/11-style-attr-and-style-element/case.conf create mode 100644 graph/test/web/cases/nodes/11-style-attr-and-style-element/src/img/hero.png create mode 100644 graph/test/web/cases/nodes/11-style-attr-and-style-element/src/index.html create mode 100644 graph/test/web/cases/nodes/12-css-node-kinds/case.conf create mode 100644 graph/test/web/cases/nodes/12-css-node-kinds/src/app.css create mode 100644 graph/test/web/cases/nodes/12-css-node-kinds/src/index.html create mode 100644 graph/test/web/cases/nodes/13-script-types/case.conf create mode 100644 graph/test/web/cases/nodes/13-script-types/src/index.html create mode 100644 graph/test/web/cases/nodes/13-script-types/src/lib.js create mode 100644 graph/test/web/cases/nodes/13-script-types/src/m.js create mode 100644 graph/test/web/cases/nodes/14-references/case.conf create mode 100644 graph/test/web/cases/nodes/14-references/src/favicon.ico create mode 100644 graph/test/web/cases/nodes/14-references/src/site/img/a.png create mode 100644 graph/test/web/cases/nodes/14-references/src/site/img/p.jpg create mode 100644 graph/test/web/cases/nodes/14-references/src/site/index.html create mode 100644 graph/test/web/cases/nodes/14-references/src/site/next.html create mode 100644 graph/test/web/cases/nodes/14-references/src/up.html create mode 100644 graph/test/web/cases/nodes/15-template-dialects/case.conf create mode 100644 graph/test/web/cases/nodes/15-template-dialects/src/index.html create mode 100644 graph/test/web/cases/nodes/16-selector-parts/case.conf create mode 100644 graph/test/web/cases/nodes/16-selector-parts/src/index.html create mode 100644 graph/test/web/cases/nodes/16-selector-parts/src/s.css create mode 100644 graph/test/web/cases/pages/01-shared-stylesheet/case.conf create mode 100644 graph/test/web/cases/pages/01-shared-stylesheet/src/about.html create mode 100644 graph/test/web/cases/pages/01-shared-stylesheet/src/css/theme.css create mode 100644 graph/test/web/cases/pages/01-shared-stylesheet/src/index.html create mode 100644 graph/test/web/cases/pages/02-anchors-forms-iframes/case.conf create mode 100644 graph/test/web/cases/pages/02-anchors-forms-iframes/src/demo/frame.html create mode 100644 graph/test/web/cases/pages/02-anchors-forms-iframes/src/docs/guide.html create mode 100644 graph/test/web/cases/pages/02-anchors-forms-iframes/src/docs/index.html create mode 100644 graph/test/web/cases/pages/02-anchors-forms-iframes/src/index.html create mode 100644 graph/test/web/cases/pages/03-import-chain/case.conf create mode 100644 graph/test/web/cases/pages/03-import-chain/src/index.html create mode 100644 graph/test/web/cases/pages/03-import-chain/src/themes/all.css create mode 100644 graph/test/web/cases/pages/03-import-chain/src/themes/base.css create mode 100644 graph/test/web/cases/pages/03-import-chain/src/themes/core.css create mode 100644 graph/test/web/cases/pages/03-import-chain/src/themes/cycle.css create mode 100644 graph/test/web/cases/pages/03-import-chain/src/themes/theme.css create mode 100644 graph/test/web/cases/pages/04-include-partials/case.conf create mode 100644 graph/test/web/cases/pages/04-include-partials/src/src/css/style.css create mode 100644 graph/test/web/cases/pages/04-include-partials/src/src/index.html create mode 100644 graph/test/web/cases/pages/04-include-partials/src/src/partials/sidebar.html create mode 100644 graph/test/web/cases/refs/01-var-chains-and-fallbacks/case.conf create mode 100644 graph/test/web/cases/refs/01-var-chains-and-fallbacks/src/index.html create mode 100644 graph/test/web/cases/refs/01-var-chains-and-fallbacks/src/s.css create mode 100644 graph/test/web/cases/refs/02-var-inheritance-scope/case.conf create mode 100644 graph/test/web/cases/refs/02-var-inheritance-scope/src/index.html create mode 100644 graph/test/web/cases/refs/02-var-inheritance-scope/src/s.css create mode 100644 graph/test/web/cases/refs/03-property-rule/case.conf create mode 100644 graph/test/web/cases/refs/03-property-rule/src/index.html create mode 100644 graph/test/web/cases/refs/03-property-rule/src/s.css create mode 100644 graph/test/web/cases/refs/04-keyframes-and-vendor/case.conf create mode 100644 graph/test/web/cases/refs/04-keyframes-and-vendor/src/index.html create mode 100644 graph/test/web/cases/refs/04-keyframes-and-vendor/src/s.css create mode 100644 graph/test/web/cases/refs/05-font-face-and-generic/case.conf create mode 100644 graph/test/web/cases/refs/05-font-face-and-generic/src/fonts/brand.woff2 create mode 100644 graph/test/web/cases/refs/05-font-face-and-generic/src/index.html create mode 100644 graph/test/web/cases/refs/05-font-face-and-generic/src/s.css create mode 100644 graph/test/web/cases/refs/06-url-resolution/case.conf create mode 100644 graph/test/web/cases/refs/06-url-resolution/src/app/css/s.css create mode 100644 graph/test/web/cases/refs/06-url-resolution/src/app/img/logo.png create mode 100644 graph/test/web/cases/refs/06-url-resolution/src/app/pages/index.html create mode 100644 graph/test/web/cases/refs/07-container-names/case.conf create mode 100644 graph/test/web/cases/refs/07-container-names/src/index.html create mode 100644 graph/test/web/cases/refs/07-container-names/src/s.css create mode 100644 graph/test/web/cases/refs/08-loads-unknowns-and-orphans/case.conf create mode 100644 graph/test/web/cases/refs/08-loads-unknowns-and-orphans/src/css/dark.css create mode 100644 graph/test/web/cases/refs/08-loads-unknowns-and-orphans/src/css/main.css create mode 100644 graph/test/web/cases/refs/08-loads-unknowns-and-orphans/src/css/unused.css create mode 100644 graph/test/web/cases/refs/08-loads-unknowns-and-orphans/src/dist/app.css create mode 100644 graph/test/web/cases/refs/08-loads-unknowns-and-orphans/src/index.html create mode 100644 graph/test/web/cases/scale/01-2k-pages-50k-rules/case.conf create mode 100644 graph/test/web/cases/scale/02-styles-200-pages/case.conf create mode 100644 graph/test/web/expected/cascade/01-combinators.tsv create mode 100644 graph/test/web/expected/cascade/02-attribute-operators.tsv create mode 100644 graph/test/web/expected/cascade/03-logical-pseudos.tsv create mode 100644 graph/test/web/expected/cascade/04-structural-pseudos.tsv create mode 100644 graph/test/web/expected/cascade/05-nesting.tsv create mode 100644 graph/test/web/expected/cascade/06-at-rule-conditions.tsv create mode 100644 graph/test/web/expected/cascade/07-state-pseudos.tsv create mode 100644 graph/test/web/expected/cascade/08-specificity-and-order.tsv create mode 100644 graph/test/web/expected/cascade/09-layers.tsv create mode 100644 graph/test/web/expected/cascade/10-quirks-mode.tsv create mode 100644 graph/test/web/expected/cascade/11-dynamic-class-and-unmatched.tsv create mode 100644 graph/test/web/expected/cascade/12-shadow-and-unparsed.tsv create mode 100644 graph/test/web/expected/cascade/13-inert-template-noscript.tsv create mode 100644 graph/test/web/expected/cascade/14-svg-case-and-namespaces.tsv create mode 100644 graph/test/web/expected/cascade/15-root-and-lang.tsv create mode 100644 graph/test/web/expected/cascade/16-fragment-page.tsv create mode 100644 graph/test/web/expected/crosslang/01-guard.tsv create mode 100644 graph/test/web/expected/js/01-inline-classic-and-module.tsv create mode 100644 graph/test/web/expected/js/02-non-js-script-bodies.tsv create mode 100644 graph/test/web/expected/js/03-on-handlers.tsv create mode 100644 graph/test/web/expected/js/04-dom-touch-vanilla.tsv create mode 100644 graph/test/web/expected/js/05-dom-touch-jquery.tsv create mode 100644 graph/test/web/expected/js/06-external-js-functions.tsv create mode 100644 graph/test/web/expected/nodes/01-void-and-self-closing.tsv create mode 100644 graph/test/web/expected/nodes/02-implied-elements.tsv create mode 100644 graph/test/web/expected/nodes/03-template-svg-math.tsv create mode 100644 graph/test/web/expected/nodes/04-iframe-srcdoc.tsv create mode 100644 graph/test/web/expected/nodes/05-conditional-comments-cdata.tsv create mode 100644 graph/test/web/expected/nodes/06-entities-in-class.tsv create mode 100644 graph/test/web/expected/nodes/07-duplicate-ids.tsv create mode 100644 graph/test/web/expected/nodes/08-uppercase-unquoted.tsv create mode 100644 graph/test/web/expected/nodes/09-bom-crlf.tsv create mode 100644 graph/test/web/expected/nodes/10-minified-one-line-css.tsv create mode 100644 graph/test/web/expected/nodes/11-style-attr-and-style-element.tsv create mode 100644 graph/test/web/expected/nodes/12-css-node-kinds.tsv create mode 100644 graph/test/web/expected/nodes/13-script-types.tsv create mode 100644 graph/test/web/expected/nodes/14-references.tsv create mode 100644 graph/test/web/expected/nodes/15-template-dialects.tsv create mode 100644 graph/test/web/expected/nodes/16-selector-parts.tsv create mode 100644 graph/test/web/expected/pages/01-shared-stylesheet.tsv create mode 100644 graph/test/web/expected/pages/02-anchors-forms-iframes.tsv create mode 100644 graph/test/web/expected/pages/03-import-chain.tsv create mode 100644 graph/test/web/expected/pages/04-include-partials.tsv create mode 100644 graph/test/web/expected/refs/01-var-chains-and-fallbacks.tsv create mode 100644 graph/test/web/expected/refs/02-var-inheritance-scope.tsv create mode 100644 graph/test/web/expected/refs/03-property-rule.tsv create mode 100644 graph/test/web/expected/refs/04-keyframes-and-vendor.tsv create mode 100644 graph/test/web/expected/refs/05-font-face-and-generic.tsv create mode 100644 graph/test/web/expected/refs/06-url-resolution.tsv create mode 100644 graph/test/web/expected/refs/07-container-names.tsv create mode 100644 graph/test/web/expected/refs/08-loads-unknowns-and-orphans.tsv create mode 100755 graph/test/web/run-tests.sh create mode 100755 graph/test/web/tools/crosslang_guard.py create mode 100755 graph/test/web/tools/gate.py create mode 100755 graph/test/web/tools/gen_scale.py create mode 100755 graph/test/web/tools/normalize.py diff --git a/graph/test/web/.gitattributes b/graph/test/web/.gitattributes new file mode 100644 index 000000000..85e009c36 --- /dev/null +++ b/graph/test/web/.gitattributes @@ -0,0 +1,2 @@ +# Fixtures whose line endings ARE the test: never normalise them +cases/nodes/09-bom-crlf/src/** -text diff --git a/graph/test/web/cases/cascade/01-combinators/case.conf b/graph/test/web/cases/cascade/01-combinators/case.conf new file mode 100644 index 000000000..ec88cb539 --- /dev/null +++ b/graph/test/web/cases/cascade/01-combinators/case.conf @@ -0,0 +1,2 @@ +# shape: admin layouts styled through descendant, child, adjacent and general-sibling selectors (.sidebar > ul li + li) +kinds=styles,unknown diff --git a/graph/test/web/cases/cascade/01-combinators/src/index.html b/graph/test/web/cases/cascade/01-combinators/src/index.html new file mode 100644 index 000000000..63921be29 --- /dev/null +++ b/graph/test/web/cases/cascade/01-combinators/src/index.html @@ -0,0 +1,10 @@ + + +
+ +a
bc
+
a
bc
x
+ + diff --git a/graph/test/web/cases/cascade/06-at-rule-conditions/src/narrow.css b/graph/test/web/cases/cascade/06-at-rule-conditions/src/narrow.css new file mode 100644 index 000000000..575564059 --- /dev/null +++ b/graph/test/web/cases/cascade/06-at-rule-conditions/src/narrow.css @@ -0,0 +1 @@ +.p { a: 4 } diff --git a/graph/test/web/cases/cascade/06-at-rule-conditions/src/print.css b/graph/test/web/cases/cascade/06-at-rule-conditions/src/print.css new file mode 100644 index 000000000..569c195d8 --- /dev/null +++ b/graph/test/web/cases/cascade/06-at-rule-conditions/src/print.css @@ -0,0 +1 @@ +.p { a: 5 } diff --git a/graph/test/web/cases/cascade/06-at-rule-conditions/src/s.css b/graph/test/web/cases/cascade/06-at-rule-conditions/src/s.css new file mode 100644 index 000000000..6b1816c4e --- /dev/null +++ b/graph/test/web/cases/cascade/06-at-rule-conditions/src/s.css @@ -0,0 +1,5 @@ +@import url("narrow.css") screen and (max-width: 600px); +.p { a: 0 } +@media print { .p { a: 1 } } +@media screen { @supports (display: grid) { .p { a: 2 } } } +@container (min-width: 10em) { .p { a: 3 } } diff --git a/graph/test/web/cases/cascade/07-state-pseudos/case.conf b/graph/test/web/cases/cascade/07-state-pseudos/case.conf new file mode 100644 index 000000000..02cacdc33 --- /dev/null +++ b/graph/test/web/cases/cascade/07-state-pseudos/case.conf @@ -0,0 +1,2 @@ +# shape: buttons and inputs styled by :hover/:focus-visible/:active, initial form state (:checked, :disabled, :placeholder-shown), ::before/::after, legacy :after and vendor ::-webkit- pseudos +kinds=styles diff --git a/graph/test/web/cases/cascade/07-state-pseudos/src/index.html b/graph/test/web/cases/cascade/07-state-pseudos/src/index.html new file mode 100644 index 000000000..42db92a30 --- /dev/null +++ b/graph/test/web/cases/cascade/07-state-pseudos/src/index.html @@ -0,0 +1,9 @@ + + + + + + +lno href + + diff --git a/graph/test/web/cases/cascade/07-state-pseudos/src/s.css b/graph/test/web/cases/cascade/07-state-pseudos/src/s.css new file mode 100644 index 000000000..ddaa4a257 --- /dev/null +++ b/graph/test/web/cases/cascade/07-state-pseudos/src/s.css @@ -0,0 +1,13 @@ +.b:hover { a: 1 } +.b:focus-visible::before { a: 2 } +.b:disabled { a: 3 } +.b:enabled:active { a: 4 } +.c:checked { a: 5 } +.c:not(:checked) { a: 6 } +.t:placeholder-shown { a: 7 } +.t::-webkit-input-placeholder { a: 8 } +.l:link { a: 9 } +.l:visited { a: 10 } +.l:after { a: 11 } +.b:-moz-focusring { a: 12 } +.b:not(:hover) { a: 13 } diff --git a/graph/test/web/cases/cascade/08-specificity-and-order/case.conf b/graph/test/web/cases/cascade/08-specificity-and-order/case.conf new file mode 100644 index 000000000..7bf9ef23a --- /dev/null +++ b/graph/test/web/cases/cascade/08-specificity-and-order/case.conf @@ -0,0 +1,2 @@ +# shape: a page loading a framework sheet, a theme that @imports a reset, and an inline + + + + + +x
+ +