mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
test(mapillary): harness accepts images without a creator name and dumps state on caption timeouts
Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
1 parent
d6b3bd57a9
commit
d3390b6961
1 file changed
+39
-3
@@ -71,6 +71,10 @@ async function main() {
|
|||||||
const page = await browser.newPage();
|
const page = await browser.newPage();
|
||||||
const errors = [];
|
const errors = [];
|
||||||
page.on('pageerror', (error) => errors.push(error.message));
|
page.on('pageerror', (error) => errors.push(error.message));
|
||||||
|
// The layer swallows listener exceptions into a console warning; surface them.
|
||||||
|
page.on('console', (message) => {
|
||||||
|
if (/listener error/i.test(message.text())) errors.push(message.text());
|
||||||
|
});
|
||||||
await page.goto(url, { waitUntil: 'domcontentloaded' });
|
await page.goto(url, { waitUntil: 'domcontentloaded' });
|
||||||
await page.waitForFunction(
|
await page.waitForFunction(
|
||||||
() => Boolean(window.__godsEyeView?.dataManager),
|
() => Boolean(window.__godsEyeView?.dataManager),
|
||||||
@@ -270,17 +274,49 @@ async function main() {
|
|||||||
},
|
},
|
||||||
{ timeout: 90_000 },
|
{ timeout: 90_000 },
|
||||||
);
|
);
|
||||||
await sleep(2500);
|
const street = await page.evaluate(
|
||||||
|
() =>
|
||||||
|
window.__godsEyeView.dataManager.layers
|
||||||
|
.get('mapillary')
|
||||||
|
.module.getUIState().street,
|
||||||
|
);
|
||||||
|
assert.equal(street.error, null, `viewer error: ${street.error}`);
|
||||||
|
// Some images carry no creator name; the date/bearing side always fills.
|
||||||
|
try {
|
||||||
|
await page.waitForFunction(
|
||||||
|
() =>
|
||||||
|
document.getElementById('mly-image-when').textContent.trim()
|
||||||
|
.length > 0,
|
||||||
|
{ timeout: 30_000 },
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
const dump = await page.evaluate(() => {
|
||||||
|
const u = window.__godsEyeView.dataManager.layers
|
||||||
|
.get('mapillary')
|
||||||
|
.module.getUIState();
|
||||||
|
return {
|
||||||
|
street: u.street,
|
||||||
|
wrapHidden: document.getElementById('mly-viewer-wrap').hidden,
|
||||||
|
collapsed: document
|
||||||
|
.getElementById('mapillary-panel')
|
||||||
|
.classList.contains('collapsed'),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
throw new Error(
|
||||||
|
`caption never filled: ${JSON.stringify(dump)}; errors=${JSON.stringify(errors)}`,
|
||||||
|
{ cause: error },
|
||||||
|
);
|
||||||
|
}
|
||||||
const view = await page.evaluate(() => ({
|
const view = await page.evaluate(() => ({
|
||||||
hidden: document.getElementById('mly-viewer-wrap').hidden,
|
hidden: document.getElementById('mly-viewer-wrap').hidden,
|
||||||
by: document.getElementById('mly-image-by').textContent,
|
when: document.getElementById('mly-image-when').textContent.trim(),
|
||||||
width: Math.round(
|
width: Math.round(
|
||||||
document.getElementById('mly-viewer').getBoundingClientRect().width,
|
document.getElementById('mly-viewer').getBoundingClientRect().width,
|
||||||
),
|
),
|
||||||
}));
|
}));
|
||||||
assert.equal(view.hidden, false);
|
assert.equal(view.hidden, false);
|
||||||
assert.ok(view.width > 200);
|
assert.ok(view.width > 200);
|
||||||
assert.match(view.by, /Image by/);
|
assert.ok(view.when.length > 0, 'caption shows the capture date');
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
await step(
|
await step(
|
||||||
|
|||||||
Reference in new issue
Block a user