Add fe-map and iss sources, The Shape of Distance as published, contribution guide
- femap/: planar best-effort solver, build, result and page (fe-map.aethercosmology.com) - satellites/: The Sync Test build, ISS elements, SatNOGS timings and page (iss.aethercosmology.com) - src/handoff/The_Shape_of_Distance_PRESENTATION.html: inputs for both - CONTRIBUTING.md; README and LICENSE-DATA cover all four sites; GitHub mirror for issues and pull requests Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+4
-12
@@ -1,5 +1,4 @@
|
||||
// New sections: no errors; flat panels at zero correction equal the page's straight-line counts for every source;
|
||||
// the last slider stop leaves nothing inconsistent; screenshots of each section.
|
||||
// Networks and code sections: no errors, no horizontal overflow, screenshots; the flat-fit section stays removed.
|
||||
import { chromium } from 'playwright-core';
|
||||
import { PAGE, HAND } from './paths.mjs';
|
||||
const b = await chromium.launch({ executablePath: process.env.CH });
|
||||
@@ -8,18 +7,11 @@ for (const [w, h] of [[1440, 900], [390, 844]]) {
|
||||
const p = await b.newPage({ viewport: { width: w, height: h } });
|
||||
p.on('pageerror', e => errs.push(`${w}: ${e.message}`)); p.on('console', m => { if (m.type() === 'error' && !/net::|ERR_/.test(m.text())) errs.push(`${w}: ${m.text()}`) });
|
||||
await p.goto(PAGE('site/index.html')); await p.waitForTimeout(1500);
|
||||
for (const src of ['all', 'ours', 'gp', 'home']) {
|
||||
await p.selectOption('#srcsel', src); await p.waitForTimeout(150);
|
||||
const r = await p.evaluate(() => { const out = {};
|
||||
for (const [m, , k] of FFM) { const f = D.flat.fits[S.src][k]; out[m] = [f.budgets[0].inconsistent.length, liveBad(m, 'line'), f.budgets[f.budgets.length - 1].inconsistent.length, f.routes, LP.length] }
|
||||
return out });
|
||||
for (const [m, [b0, page, last, nr, lp]] of Object.entries(r)) if (b0 !== page || last !== 0 || nr !== lp) fails.push(`${w} ${src} ${m}: fit ${b0} page ${page} last ${last} routes ${nr}/${lp}`);
|
||||
}
|
||||
if (await p.locator('h2.sec', { hasText: 'flat arrangements' }).count()) fails.push(`${w}: flat-fit section present`);
|
||||
await p.selectOption('#srcsel', 'all'); await p.waitForTimeout(200);
|
||||
for (const [sec, name] of [['Networks on the measured paths', 'net'], ['Best attainable flat arrangements', 'ff'], ['Code and data', 'code']]) {
|
||||
for (const [sec, name] of [['Networks on the measured paths', 'net'], ['Code and data', 'code']]) {
|
||||
const el = p.locator('h2.sec', { hasText: sec }).locator('xpath=..');
|
||||
if (name === 'ff') for (const v of [0, 4, 6]) { await p.fill('#ffb', String(v)); await p.dispatchEvent('#ffb', 'input'); await p.waitForTimeout(250); await el.screenshot({ path: `out/sec_${name}${v}_${w}.png` }) }
|
||||
else await el.screenshot({ path: `out/sec_${name}_${w}.png` });
|
||||
await el.screenshot({ path: `out/sec_${name}_${w}.png` });
|
||||
}
|
||||
const sw = await p.evaluate(() => document.documentElement.scrollWidth);
|
||||
if (sw !== w) fails.push(`${w}: page scrollWidth ${sw}`);
|
||||
|
||||
Reference in New Issue
Block a user