fix(qa): keep routine map checks keyless

Record keyless launch instructions without changing app defaults.
Block Google tile and token fallback requests in routine CCTV checks;
add a guarded startup check for both engines.
This commit is contained in:
German Khokhlov committed 2026-10-28 23:33:15 +04:00
1 parent 311e178d0c
commit f72bf6a774
4 files changed
+49 -1

No files matched your search

+4 -1
View File
@@ -1241,5 +1241,8 @@
"scripts/qa-w2-firms-perf.mjs",
"scripts/qa-w2-firms-ground.mjs",
"scripts/qa-w2-radio.mjs",
"scripts/fixtures/w2/radio.mjs"
"scripts/fixtures/w2/radio.mjs",
"scripts/qa-map-policy.mjs",
"scripts/qa-map-policy.test.mjs",
"scripts/qa-map-startup.mjs"
]
+3
View File
@@ -74,6 +74,7 @@
import puppeteer from 'puppeteer';
import { watchW1Page, redact } from './qa-browserEvidence.mjs';
import { blockPaidQaMaps } from './qa-map-policy.mjs';
import { installCctvFixture } from './fixtures/w2/cctv.mjs';
import fs from 'node:fs';
import path from 'node:path';
@@ -97,6 +98,7 @@ const explicitUrl = getOpt('--url', process.env.QA_BASE_URL);
const output = getOpt('--out');
if (!explicitUrl || !output)
throw new Error('Explicit --url and --out are required');
const mapPolicy = { allowPaidMaps: getFlag('--allow-paid-maps') };
const CCTV_URL = new URL(explicitUrl);
if (
['4173', '4185', '4186', '4187', '4188', '4189', '4194'].includes(
@@ -401,6 +403,7 @@ async function main() {
try {
const page = await browser.newPage();
await blockPaidQaMaps(page, mapPolicy);
await page.setViewport({ width: 1280, height: 800 });
watchW1Page(page, evidence, {
name: 'cctv-legacy',
+15
View File
@@ -0,0 +1,15 @@
/** Install before navigation, without intercepting workers or ordinary tiles. */
export async function blockPaidQaMaps(page, { allowPaidMaps = false } = {}) {
if (allowPaidMaps) return;
const session = await page.createCDPSession();
await session.send('Network.enable');
await session.send('Network.setBlockedURLs', {
urls: [
'*://tile.googleapis.com/*',
'*://*.googleapis.com/*3dtiles*',
'*://api.cesium.com/v1/assets/2275207/*',
'*/api/google/tiles*',
],
});
return session;
}
+27
View File
@@ -0,0 +1,27 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { blockPaidQaMaps } from './qa-map-policy.mjs';
test('routine QA blocks direct Google tiles, hosted Google assets and token fallback', async () => {
const calls = [];
const page = {
createCDPSession: async () => ({
send: async (...args) => calls.push(args),
}),
};
await blockPaidQaMaps(page);
assert.equal(calls[0][0], 'Network.enable');
assert.equal(calls[1][0], 'Network.setBlockedURLs');
assert.ok(calls[1][1].urls.includes('*://tile.googleapis.com/*'));
assert.ok(
calls[1][1].urls.includes('*://api.cesium.com/v1/assets/2275207/*'),
);
assert.ok(calls[1][1].urls.includes('*/api/google/tiles*'));
});
test('a necessary 3D-specific check must explicitly opt out of the request block', async () => {
await blockPaidQaMaps(
{ createCDPSession: () => assert.fail('unexpected block') },
{ allowPaidMaps: true },
);
});