mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
test: follow hold-Space and cancellable tuner keyboard semantics
This commit is contained in:
1 parent
a5af1cbfa3
commit
457fe5451c
1 file changed
+17
-5
+17
-5
@@ -2699,9 +2699,15 @@ async function main() {
|
|||||||
const radio = window.__godsEyeView.dataManager.layers.get('radio').module;
|
const radio = window.__godsEyeView.dataManager.layers.get('radio').module;
|
||||||
await radio.play();
|
await radio.play();
|
||||||
const beforeSpace = radio.getUIState().audioState;
|
const beforeSpace = radio.getUIState().audioState;
|
||||||
document.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Space', key: ' ' }));
|
// Simulate an already-started hold-Space session; click-started open mic
|
||||||
|
// deliberately ignores Space takeover, and short taps never claim voice.
|
||||||
|
const priorPushToTalkMode = voice.pushToTalkMode;
|
||||||
|
voice.pushToTalkMode = true;
|
||||||
|
document.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, cancelable: true, code: 'Space', key: ' ' }));
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 700));
|
||||||
const afterSpace = radio.getUIState().audioState;
|
const afterSpace = radio.getUIState().audioState;
|
||||||
document.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true, code: 'Space', key: ' ' }));
|
document.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true, cancelable: true, code: 'Space', key: ' ' }));
|
||||||
|
voice.pushToTalkMode = priorPushToTalkMode;
|
||||||
await radio.play();
|
await radio.play();
|
||||||
voice.setVoiceSpeaker('ai');
|
voice.setVoiceSpeaker('ai');
|
||||||
return { beforeSpace, afterSpace, afterAi: radio.getUIState().audioState };
|
return { beforeSpace, afterSpace, afterAi: radio.getUIState().audioState };
|
||||||
@@ -3369,6 +3375,7 @@ async function main() {
|
|||||||
const slider = document.getElementById('radio-tuner-slider');
|
const slider = document.getElementById('radio-tuner-slider');
|
||||||
const key = (type, value) => slider.dispatchEvent(new KeyboardEvent(type, {
|
const key = (type, value) => slider.dispatchEvent(new KeyboardEvent(type, {
|
||||||
bubbles: true,
|
bubbles: true,
|
||||||
|
cancelable: true,
|
||||||
key: value,
|
key: value,
|
||||||
}));
|
}));
|
||||||
const markerId = () => gev.viewer.entities.values
|
const markerId = () => gev.viewer.entities.values
|
||||||
@@ -3423,7 +3430,8 @@ async function main() {
|
|||||||
previewAndCancel('PageUp', Math.min(count - 1, base + pageStep)),
|
previewAndCancel('PageUp', Math.min(count - 1, base + pageStep)),
|
||||||
previewAndCancel('PageDown', Math.max(0, base - pageStep)),
|
previewAndCancel('PageDown', Math.max(0, base - pageStep)),
|
||||||
];
|
];
|
||||||
return { startIndex, expectedIndex, expectedId, preview, committed, cancelled, navigation };
|
return { startIndex, expectedIndex, expectedId, preview, committed, cancelled, navigation,
|
||||||
|
panelStayedOpen: !document.getElementById('radio-panel').classList.contains('collapsed') };
|
||||||
});
|
});
|
||||||
check(
|
check(
|
||||||
'keyboard preview is silent, key release commits once, and Escape restores the committed station',
|
'keyboard preview is silent, key release commits once, and Escape restores the committed station',
|
||||||
@@ -3435,7 +3443,8 @@ async function main() {
|
|||||||
&& !tunerKeyboard.committed.tuningActive && tunerKeyboard.committed.playDelta === 1
|
&& !tunerKeyboard.committed.tuningActive && tunerKeyboard.committed.playDelta === 1
|
||||||
&& tunerKeyboard.cancelled.selectedId === tunerKeyboard.expectedId
|
&& tunerKeyboard.cancelled.selectedId === tunerKeyboard.expectedId
|
||||||
&& tunerKeyboard.cancelled.slot === tunerKeyboard.expectedIndex
|
&& tunerKeyboard.cancelled.slot === tunerKeyboard.expectedIndex
|
||||||
&& !tunerKeyboard.cancelled.tuningActive && tunerKeyboard.cancelled.playDelta === 0,
|
&& !tunerKeyboard.cancelled.tuningActive && tunerKeyboard.cancelled.playDelta === 0
|
||||||
|
&& tunerKeyboard.panelStayedOpen,
|
||||||
JSON.stringify(tunerKeyboard),
|
JSON.stringify(tunerKeyboard),
|
||||||
);
|
);
|
||||||
check(
|
check(
|
||||||
@@ -4437,7 +4446,10 @@ async function main() {
|
|||||||
});
|
});
|
||||||
await page.click('#context-radio-toggle-btn');
|
await page.click('#context-radio-toggle-btn');
|
||||||
await page.waitForFunction(() => !document.getElementById('radio-panel').classList.contains('collapsed'));
|
await page.waitForFunction(() => !document.getElementById('radio-panel').classList.contains('collapsed'));
|
||||||
await sleep(450);
|
await page.waitForFunction((priorScroll) => (
|
||||||
|
document.activeElement?.getAttribute('data-collapse-target') === 'radio-panel'
|
||||||
|
&& document.querySelector('#global-context-panel .global-context-panel-inner').scrollTop > priorScroll
|
||||||
|
), { timeout: 10_000 }, expandedContextRadioBefore.scrollTop);
|
||||||
const expandedContextRadioAfter = await page.evaluate(() => {
|
const expandedContextRadioAfter = await page.evaluate(() => {
|
||||||
const gev = window.__godsEyeView;
|
const gev = window.__godsEyeView;
|
||||||
gev.styleManager._renderRadioState(gev.dataManager.layers.get('radio').module.getUIState());
|
gev.styleManager._renderRadioState(gev.dataManager.layers.get('radio').module.getUIState());
|
||||||
|
|||||||
Reference in new issue
Block a user