1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
GEN_INCLUDE(['../testing/chromevox_e2e_test_base.js']);
/**
* Test fixture for MathHandler.
*/
ChromeVoxMV2MathHandlerTest = class extends ChromeVoxE2ETest {
/** @override */
async setUpDeferred() {
await super.setUpDeferred();
await Promise.all([
// Alphabetical based on file path.
importModule('MathHandler', '/chromevox/mv2/background/math_handler.js'),
]);
}
createMockNode(properties) {
return Object.assign(
{
state: {},
children: [],
unclippedLocation: {left: 20, top: 10, width: 100, height: 50},
location: {left: 20, top: 10, width: 100, height: 50},
},
properties);
}
};
AX_TEST_F(
'ChromeVoxMV2MathHandlerTest', 'noMathRootInMathContent', async function() {
const mockFeedback = this.createMockFeedback();
const math = this.createMockNode({
role: chrome.automation.RoleType.MathMlMath,
mathContent:
'<mfrac><mrow><mi>d</mi><mi>y</mi></mrow><mrow><mi>d</mi>' +
'<mi>x</mi></mrow></mfrac><mo>=</mo>'
});
const range = CursorRange.fromNode(math);
MathHandler.init(range);
mockFeedback.call(() => MathHandler.instance.speak())
.expectSpeech('StartFraction d y Over d x EndFraction =')
.expectSpeech('Press up, down, left, or right to explore math');
await mockFeedback.replay();
});
AX_TEST_F(
'ChromeVoxMV2MathHandlerTest', 'mathRootInMathContent', async function() {
const mockFeedback = this.createMockFeedback();
const math = this.createMockNode({
role: chrome.automation.RoleType.MathMlMath,
mathContent: '<math><mfrac><mrow><mi>d</mi><mi>y</mi></mrow><mrow>' +
'<mi>d</mi><mi>x</mi></mrow></mfrac><mo>=</mo></math>'
});
const range = CursorRange.fromNode(math);
MathHandler.init(range);
mockFeedback.call(() => MathHandler.instance.speak())
.expectSpeech('StartFraction d y Over d x EndFraction =')
.expectSpeech('Press up, down, left, or right to explore math');
await mockFeedback.replay();
});
AX_TEST_F(
'ChromeVoxMV2MathHandlerTest', 'mathRootDoesntMatchRegexInMathContent',
async function() {
const mockFeedback = this.createMockFeedback();
const math = this.createMockNode({
role: chrome.automation.RoleType.MathMlMath,
mathContent: '<math id="42"><mfrac><mrow><mi>d</mi><mi>y</mi></mrow>' +
'<mrow><mi>d</mi><mi>x</mi></mrow></mfrac><mo>=</mo></math>'
});
const range = CursorRange.fromNode(math);
MathHandler.init(range);
mockFeedback.call(() => MathHandler.instance.speak())
.expectSpeech('StartFraction d y Over d x EndFraction =')
.expectSpeech('Press up, down, left, or right to explore math');
await mockFeedback.replay();
});
|