Refine failover controls and bump Harbor versions
This commit is contained in:
@@ -16,17 +16,29 @@ test('reserve is a Gateway-only drawer immediately after subscriptions', () => {
|
||||
assert.match(feature, /Уже открытые соединения Harbor не закрывает/);
|
||||
});
|
||||
|
||||
test('failover settings expose an off switch, channel targets, checks and per-service timeouts', () => {
|
||||
assert.match(feature, /Использовать резерв[\s\S]*Полностью пассивен/);
|
||||
assert.match(feature, /\['primary', 'reserve'\][\s\S]*Подписка[\s\S]*Сервер/);
|
||||
test('failover settings use Harbor switches, two pair pickers and added check rows', () => {
|
||||
assert.match(feature, /client-failover-heading[\s\S]*<h2>Резервный канал<\/h2>[\s\S]*<HarborSwitch/);
|
||||
assert.match(feature, /role="switch"[\s\S]*aria-checked=\{checked\}/);
|
||||
assert.doesNotMatch(feature, /type="checkbox"|<select/);
|
||||
assert.match(feature, /\['primary', 'reserve'\][\s\S]*client-failover-\$\{channel\}-options[\s\S]*updateTarget\(channel, optionId\)/);
|
||||
assert.match(feature, /profile\.label} · \$\{server\.label/);
|
||||
assert.match(feature, /ArrowDown[\s\S]*Home[\s\S]*End[\s\S]*Escape/);
|
||||
assert.match(feature, /role="listbox"[\s\S]*role="option"/);
|
||||
assert.match(feature, /Что проверять/);
|
||||
assert.match(feature, /min="2"[\s\S]*max="30"[\s\S]*Таймаут проверки:/);
|
||||
assert.match(feature, /Проверять каждые, сек[\s\S]*Сбой должен длиться, сек[\s\S]*Восстановление, сек/);
|
||||
assert.match(feature, /Не переключать во время работы[\s\S]*Тишина перед переключением[\s\S]*Активный трафик, КБ\/с/);
|
||||
assert.match(feature, /Переключение во время работы[\s\S]*Ждать тишины перед автоматическим переключением[\s\S]*Тишина перед переключением[\s\S]*Активный трафик, КБ\/с/);
|
||||
assert.match(feature, /Защита от повторных сбоев[\s\S]*Окно повторных сбоев[\s\S]*Карантин основного/);
|
||||
assert.match(feature, /Добавить HTTPS-сервис/);
|
||||
assert.match(feature, /\+ Добавить проверку/);
|
||||
assert.match(feature, /Новый HTTPS-сервис…/);
|
||||
assert.match(feature, /Убрать проверку:/);
|
||||
assert.match(feature, /finishRemoveCheck/);
|
||||
assert.match(feature, /startViewTransition/);
|
||||
assert.match(feature, /Проверить оба канала/);
|
||||
assert.match(feature, /beforeunload/);
|
||||
assert.match(styles, /\.client-failover-switch\[aria-checked='true'\][\s\S]*translateX\(20px\)/);
|
||||
assert.match(styles, /\.client-failover-picker-list[\s\S]*opacity:\s*0[\s\S]*\.client-failover-picker\.is-open[\s\S]*opacity:\s*1/);
|
||||
assert.match(styles, /failover-service-out 180ms[\s\S]*@media \(prefers-reduced-motion: reduce\)/);
|
||||
});
|
||||
|
||||
test('runtime status keeps fixed geometry and explains active traffic without motion dependence', () => {
|
||||
|
||||
@@ -39,26 +39,26 @@ const expectedImports = [
|
||||
const sha256 = (value) => crypto.createHash('sha256').update(value).digest('hex');
|
||||
const acceptedLedger = {
|
||||
counts: {
|
||||
cascadeEdges: 984,
|
||||
cascadeEdges: 1015,
|
||||
customProperties: 106,
|
||||
declarations: 3805,
|
||||
declarations: 3987,
|
||||
important: 0,
|
||||
keyframes: 48,
|
||||
keyframes: 50,
|
||||
media: 17,
|
||||
rules: 1045,
|
||||
variableReferences: 977,
|
||||
rules: 1085,
|
||||
variableReferences: 1011,
|
||||
},
|
||||
hashes: {
|
||||
cascadeEdges: '423d29f846b45c3522fdc101b5aa1399264f2abe5953b9687b380d5fb865bd07',
|
||||
cascadeEdges: 'f90d8086d1e3e30462b4c7b9c293069940006ab2ac2be069c7e3f293b411d390',
|
||||
customProperties: 'fd6f16069f9fe3526f09d4d574431ddae67150d8e7a8a40e04c9fd2d179ec7ac',
|
||||
declarations: '52b5bcd795dbea19950afee0259c62cb0fb1aaca094d553cfaaae046a5f747f9',
|
||||
declarations: 'dffddfea7b28b9de1a4af74f16d25920974879c9cecff19141841691e63468dd',
|
||||
duplicateKeyframes: '4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945',
|
||||
duplicateSelectors: '8982145dba05b33bf1c93b2d54cfbe76305b276ff3c657aa020144016ada5848',
|
||||
keyframes: 'a0d69c5b3e5f235d3a76ed04bdd64f67a73fafc9c59fe2635ffda603709c0ad9',
|
||||
ruleDeclarationSequences: 'bd8d10966c15df58eb76d67fc5a21acaeec524a64805797d5fb33af3b942292e',
|
||||
selectors: '76d2d373aa9ecfd5cac3f95a47ed0fa2c44a659ac98f02f6bfd2f4505de23226',
|
||||
variableReferences: 'bea2b082cf2366041936c2da22ac3e0ab83b3e5cead1326a0f65a015daedbb3b',
|
||||
witnesses: '605555d8bae9b8d64b1c960c398b14cf910e624d547b72e4fcfced85eec30991',
|
||||
keyframes: '21e640e8d2bf5921d346563823dd332cb4c0fc376292b555d10e1670cd81d74c',
|
||||
ruleDeclarationSequences: '144d9f148f8fa2b57bd7d40a02f75f6d6894d7d1e0b6a44ec6f18b22eb876055',
|
||||
selectors: '279ee9d08e470259ee573e063d8dec8aabb7c43fc49f3c7942cc8d5af46e4828',
|
||||
variableReferences: '00358fb265ec9e847a36fbf157224d01b634477c546f1a6b72a70e8d05394a57',
|
||||
witnesses: 'c45f872c163e079f58d28c481db0b9cf919d5d4e1d053ddfdc00103bd20ae737',
|
||||
},
|
||||
};
|
||||
|
||||
@@ -211,7 +211,7 @@ test('client typography uses the shared semantic scale outside the token owner',
|
||||
|
||||
test('accepted stylesheet has pinned declaration, selector, keyframe, variable, and cascade ledgers', () => {
|
||||
const witnesses = readStyleWitnesses(root);
|
||||
assert.equal(witnesses.length, 1021);
|
||||
assert.equal(witnesses.length, 1024);
|
||||
assert.equal(witnesses.filter((witness) => witness.unknown || witness.ancestorUnknown).length, 0);
|
||||
const ledger = createStyleLedger(readStyleSource(root), { witnesses });
|
||||
assert.deepEqual(ledger.counts, acceptedLedger.counts);
|
||||
@@ -407,8 +407,8 @@ test('main owns one public stylesheet and the regrouped production CSS is determ
|
||||
assert.equal((main.match(/import ['"][^'"]+\.css['"]/g) || []).length, 1);
|
||||
|
||||
const assets = fs.readdirSync(path.join(root, 'dist/assets')).filter((file) => file.endsWith('.css'));
|
||||
assert.deepEqual(assets, ['index-DaioW5qf.css']);
|
||||
assert.deepEqual(assets, ['index-CWWRFYvR.css']);
|
||||
const built = fs.readFileSync(path.join(root, 'dist/assets', assets[0]));
|
||||
assert.equal(built.byteLength, 144728);
|
||||
assert.equal(sha256(built), '7d175321821b38be6a947a76457e310cf519e2af4b9ee95fbb0097933ca70a28');
|
||||
assert.equal(built.byteLength, 151327);
|
||||
assert.equal(sha256(built), '95bdf0125b40fe1349abd6396a40462a9c6bee40ff258078d3787b62e9213028');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user