mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-14 15:22:21 +00:00
Layer display tests no longer re-check Cesium primitives in every layer: they run on the fake engine, and one Cesium translation check per ground kind lives in the Cesium engine's ground tests. Their harnesses are shared, and the fake-engine, Cesium-engine and flights tests that repeated the contract suite are gone, 340 tests in all. The press-travel measurement is shared by the selection dispatcher and CCTV, which loses its ScreenSpaceEventHandler shim and world-click module. ALPR, installations and bikeshare share one selection keeper and selected marker write. Layers with their own click rules keep their handlers. Navara's pulse is a class like the ground pass, the ground and imagery passes share the surface uniforms, and the colour, log-depth and occlusion GLSL lives in one chunk module, each caller keeping its depth bias. The ground suite runs inside the contract suite (--only=ground:), and fixture and script names say what they test. Behaviour is unchanged on both engines.
110 lines
3.6 KiB
JavaScript
110 lines
3.6 KiB
JavaScript
// Shared 750-station directory for legacy and both-engine radio QA.
|
|
const tags = [
|
|
'news',
|
|
'talk',
|
|
'weather,emergency',
|
|
'public safety,scanner',
|
|
'aviation,atc',
|
|
'marine,maritime',
|
|
'traffic,transit',
|
|
'music,jazz',
|
|
'music,rock',
|
|
'community',
|
|
];
|
|
export const stations = Array.from({ length: 750 }, (_, index) => {
|
|
const row = Math.floor(index / 30);
|
|
const column = index % 30;
|
|
return {
|
|
id: `00000000-0000-4000-8000-${index.toString(16).padStart(12, '0')}`,
|
|
name:
|
|
index === 360
|
|
? '100.3 The River - WQRV - Meridianville/Huntsville, AL'
|
|
: index === 390
|
|
? 'La Zeta (Hermosillo) - 93.9 FM - XHHY - Uniradio - Hermosillo, Sonora'
|
|
: `QA Radio ${String(index + 1).padStart(3, '0')}`,
|
|
lat: -72 + row * 6,
|
|
lon: -174 + column * 12,
|
|
streamUrl: `https://audio.example.test/${index}.mp3`,
|
|
homepage: `https://station.example.test/${index}`,
|
|
tags: tags[index % tags.length].split(','),
|
|
languages: index === 360 ? ['Spanish'] : ['English'],
|
|
state: `Region ${row + 1}`,
|
|
country: 'United States',
|
|
countryCode: 'US',
|
|
metadataTrust: 'untrusted-community',
|
|
codec: index % 2 ? 'AAC' : 'MP3',
|
|
bitrate: 128,
|
|
};
|
|
});
|
|
|
|
export async function installRadioFixture(page) {
|
|
await page.evaluateOnNewDocument((stations) => {
|
|
localStorage.clear();
|
|
localStorage.setItem('gev:first-run-mission:v1', 'suppressed');
|
|
window.__qaRadio = {
|
|
stations,
|
|
generation: 1,
|
|
plays: [],
|
|
delay: 0,
|
|
response: 'normal',
|
|
pending: null,
|
|
};
|
|
HTMLMediaElement.prototype.play = function () {
|
|
window.qaPlayer = this;
|
|
window.__qaRadio.plays.push(this.src);
|
|
if (window.__qaRadio.delayPlay) {
|
|
window.__qaRadio.delayPlay = false;
|
|
return new Promise((resolve) => {
|
|
window.__qaRadio.releasePlay = () => {
|
|
this.dispatchEvent(new Event('playing'));
|
|
resolve();
|
|
};
|
|
});
|
|
}
|
|
queueMicrotask(() => this.dispatchEvent(new Event('playing')));
|
|
return Promise.resolve();
|
|
};
|
|
const fetch = window.fetch.bind(window);
|
|
window.fetch = async (input, init) => {
|
|
const address = String(
|
|
typeof input === 'string' || input instanceof URL ? input : input.url,
|
|
);
|
|
if (address.includes('/api/radio/stations')) {
|
|
const qa = window.__qaRadio;
|
|
qa.reads = (qa.reads || 0) + 1;
|
|
const response = {
|
|
stations: qa.response === 'empty' ? [] : qa.stations,
|
|
updatedAt: new Date().toISOString(),
|
|
stale: false,
|
|
degraded: false,
|
|
acceptedGeneration: qa.generation,
|
|
catalogInstance: 'fixture-radio-fixture',
|
|
};
|
|
const mode = qa.response;
|
|
const delay = qa.delay;
|
|
qa.delay = 0;
|
|
if (delay)
|
|
await new Promise((resolve) => {
|
|
qa.pending = resolve;
|
|
});
|
|
init?.signal?.throwIfAborted();
|
|
return new Response(
|
|
mode === 'failure' ? '{}' : JSON.stringify(response),
|
|
{
|
|
status: mode === 'failure' ? 503 : 200,
|
|
headers: { 'Content-Type': 'application/json' },
|
|
},
|
|
);
|
|
}
|
|
if (address.includes('/api/radio/click/'))
|
|
return new Response(null, { status: 204 });
|
|
if (address.includes('/api/flights'))
|
|
return new Response('{"states":[]}');
|
|
if (address.includes('/api/military')) return new Response('{"ac":[]}');
|
|
if (address.includes('/api/vessels'))
|
|
return new Response('{"connected":false,"vessels":[]}');
|
|
return fetch(input, init);
|
|
};
|
|
}, stations);
|
|
}
|