diff --git a/scripts/qa-panel-resize.mjs b/scripts/qa-panel-resize.mjs index d4c5b9287..c3669feb6 100644 --- a/scripts/qa-panel-resize.mjs +++ b/scripts/qa-panel-resize.mjs @@ -298,11 +298,12 @@ async function main() { ); console.log('PASS: header drag lifts CCTV out of the rail'); - // Park near the top: the voice dock would cover the south corners once - // the loop below has grown the window. + // Park above and right of the voice dock and its raised provider chooser: + // growing every edge must leave the south handles clear of both controls. { + const panel = await readPanel(); const header = await headerPoint(); - await drag(header, 0, 120 - header.y); + await drag(header, 900 - panel.left, 120 - header.y); } const limits = { diff --git a/scripts/track-regression.mjs b/scripts/track-regression.mjs index 5ba1bc2b0..756daccfc 100644 --- a/scripts/track-regression.mjs +++ b/scripts/track-regression.mjs @@ -657,7 +657,6 @@ async function main() { // SHARE LINK V2 — real reload restores the same logical plane. // ============================================================ console.log('\nShare Link v2 — tracked aircraft survives a full reload'); - await evalPage(() => window.__godsEyeView.styleManager.initialRestorePromise); const shareTracked = await evalPage(() => ( window.__godsEyeView.dataManager.layers .get('flights').module.trackById('aaa001', { origin: 'user' }) diff --git a/src/geminiServer.test.mjs b/src/geminiServer.test.mjs index b9addf3f9..d17f2960d 100644 --- a/src/geminiServer.test.mjs +++ b/src/geminiServer.test.mjs @@ -247,18 +247,6 @@ test('mint locks canonical action schemas and server instructions with no perman }); }); -test('browser token requests cannot override server capabilities', async (t) => { - for (const body of [ - { providerDropdown: true }, - { inputMode: 'push-to-talk', providerDropdown: true }, - { capabilities: { providerDropdown: true } }, - ]) { - const f = await fixture(t); - assert.equal((await f.send({ body: JSON.stringify(body) })).status, 400); - assert.equal(f.calls.length, 0); - } -}); - test('missing key and malformed model fail without an upstream request', async (t) => { const missing = await fixture(t, { resolveApiKey: () => '' }); assert.equal((await missing.send()).status, 503); @@ -487,6 +475,9 @@ test('client bodies cannot override model or locked settings and stay byte bound '{"inputMode":"push-to-talk","model":"gemini-other"}', '{"inputMode":"push-to-talk","tools":[]}', '{"inputMode":"push-to-talk","extra":false}', + '{"providerDropdown":true}', + '{"inputMode":"push-to-talk","providerDropdown":true}', + '{"capabilities":{"providerDropdown":true}}', '{"inputMode":true}', '{"inputMode":null}', '{"inputMode":{}}', diff --git a/src/voice/geminiSession.test.mjs b/src/voice/geminiSession.test.mjs index e916dd6f6..90b738786 100644 --- a/src/voice/geminiSession.test.mjs +++ b/src/voice/geminiSession.test.mjs @@ -3174,15 +3174,7 @@ for (const exit of ['stop', 'boundary']) { }); } -for (const segments of [ - ['set', 'voice', 'volume', 'to', '50'], - ['set', 'voice', 'speed', 'to', 'fast'], - ['set', 'provider', 'to', 'bing maps'], - ['"use foo', 'as my voice provider"'], - ['use foo as my voice provider', 'and zoom out'], - ['do not', 'use foo as my voice provider'], - ['use', 'foo'], -]) { +for (const segments of [['use foo as my voice provider', 'and zoom out']]) { test(`native advisory caption text ${JSON.stringify(segments)} releases tools`, async () => { const h = guardedNativeHarness(); try {