up
This commit is contained in:
+1
-1
Submodule reproxy updated: c03be07eab...e9a6814ebb
@@ -0,0 +1,37 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const { readFileSync } = require('node:fs');
|
||||
const { resolve } = require('node:path');
|
||||
const { test } = require('node:test');
|
||||
const { runInNewContext } = require('node:vm');
|
||||
const source = readFileSync(resolve(__dirname, '../../reproxy/web/minecraft/motion.js'), 'utf8');
|
||||
|
||||
for (const reduced of [false, true]) {
|
||||
test(`motion controls, reduced motion=${reduced}`, () => {
|
||||
const classes = new Set();
|
||||
const attributes = {};
|
||||
let click;
|
||||
let preferenceChanged;
|
||||
const button = { hidden: true, setAttribute: (key, value) => attributes[key] = value, addEventListener: (name, callback) => { assert.equal(name, 'click'); click = callback; } };
|
||||
runInNewContext(source, {
|
||||
document: { getElementById: () => button, documentElement: { classList: {
|
||||
toggle: (key, value) => value ? classes.add(key) : classes.delete(key),
|
||||
contains: key => classes.has(key),
|
||||
} } },
|
||||
window: { matchMedia: query => {
|
||||
assert.equal(query, '(prefers-reduced-motion: reduce)');
|
||||
return { matches: reduced, addEventListener: (name, callback) => { assert.equal(name, 'change'); preferenceChanged = callback; } };
|
||||
} },
|
||||
});
|
||||
assert.equal(button.hidden, false);
|
||||
assert.equal(classes.has('motion-running'), !reduced);
|
||||
assert.equal(attributes['aria-pressed'], String(reduced));
|
||||
click();
|
||||
assert.equal(classes.has('motion-running'), reduced);
|
||||
assert.equal(button.textContent, reduced ? 'Остановить механизмы' : 'Запустить механизмы');
|
||||
click();
|
||||
assert.equal(classes.has('motion-running'), !reduced);
|
||||
preferenceChanged({ matches: true });
|
||||
assert.equal(classes.has('motion-running'), false);
|
||||
assert.equal(attributes['aria-pressed'], 'true');
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user