25 lines
1.4 KiB
JavaScript
25 lines
1.4 KiB
JavaScript
// Run with: node tests/acl_picker_corner_styles.cjs
|
|
// The shared ACL picker must respect all dashboard corner-style presets without
|
|
// relying on a separate radius setting or changing its selection behaviour.
|
|
"use strict";
|
|
const assert = require("node:assert/strict");
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
const css = fs.readFileSync(path.resolve(__dirname, "../src/admin/web/style.css"), "utf8");
|
|
const parts = [
|
|
".acl-picker-details", ".acl-picker-counter", ".acl-picker-option",
|
|
".acl-picker-policy", ".acl-picker-tag", ".acl-picker-tag .acl-picker-remove"
|
|
];
|
|
for (const selector of parts) {
|
|
const escaped = selector.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
const block = css.match(new RegExp(`${escaped}\\s*\\{([^}]+)\\}`));
|
|
assert.ok(block, `Missing shared picker style: ${selector}`);
|
|
assert.match(block[1], /border-radius:\s*var\(--rp-radius-control,\s*[^)]+\);/, `${selector} must use the dashboard control radius`);
|
|
}
|
|
for (const [preset, radius] of Object.entries({ square: 0, subtle: 4, rounded: 8, extra: 12 })) {
|
|
const rule = css.match(new RegExp(`html\\[data-corner-style=${preset}\\]\\s*\\{([^}]+)\\}`));
|
|
assert.ok(rule, `Missing corner-style preset: ${preset}`);
|
|
assert.match(rule[1], new RegExp(`--rp-radius-control:\\s*${radius}px;`), `Unexpected radius for ${preset}`);
|
|
}
|
|
console.log("ACL picker corner styles: PASS (six surfaces, four presets, Original fallbacks)");
|