Reviewed-on: #3 Reviewed-by: xtul <mpiasecki720@protonmail.com> Co-authored-by: vickydotbat <vickydotbat@tutamail.com> Co-committed-by: vickydotbat <vickydotbat@tutamail.com>
55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const stylesheet = fs.readFileSync(
|
|
path.join(__dirname, "..", "scss", "westgate", "_wiki-prose.scss"),
|
|
"utf8"
|
|
);
|
|
|
|
function readBlock(source, openingPattern) {
|
|
const opening = openingPattern.exec(source);
|
|
assert(opening, "Expected a mobile-width rendering media query");
|
|
|
|
const blockStart = opening.index + opening[0].length;
|
|
let depth = 1;
|
|
for (let index = blockStart; index < source.length; index += 1) {
|
|
if (source[index] === "{") {
|
|
depth += 1;
|
|
} else if (source[index] === "}") {
|
|
depth -= 1;
|
|
if (depth === 0) {
|
|
return source.slice(blockStart, index);
|
|
}
|
|
}
|
|
}
|
|
|
|
assert.fail("Mobile-width rendering media query is not closed");
|
|
}
|
|
|
|
const mobileStyles = readBlock(stylesheet, /@media\s*\(max-width:[^)]+\)\s*\{/g);
|
|
assert.match(
|
|
mobileStyles,
|
|
/wiki[\s\S]*table[\s\S]*overflow-x:\s*auto/i,
|
|
"Wide wiki tables should scroll horizontally at mobile widths"
|
|
);
|
|
|
|
[
|
|
"attr(data-label)",
|
|
"wiki-mobile-table",
|
|
].forEach(fragment => {
|
|
assert(
|
|
!mobileStyles.includes(fragment),
|
|
`Mobile table rendering must not use stacked/card conversion: ${fragment}`
|
|
);
|
|
});
|
|
|
|
assert.doesNotMatch(
|
|
Array.from(mobileStyles.matchAll(/([^{}]+)\{([^{}]*)\}/g))
|
|
.filter(([, selectors]) => /(^|[\s,>+~])(?:tr|td|th)(?=[:.#\[\s,>+~]|$)/i.test(selectors))
|
|
.map(([, selectors, declarations]) => `${selectors}{${declarations}}`)
|
|
.join("\n"),
|
|
/display:\s*(?:block|grid)/i,
|
|
"Mobile rendering must preserve native table rows and cells"
|
|
);
|