Validation
Test suite
What the automated tests check.
npm test (in app/) runs 187 Vitest tests; npm run browsers checks the application in Chrome, Edge, Firefox and WebKit, the engine of Safari.
| Area | Checks |
|---|---|
| Ephemerides and frames | Sun and Moon positions, Earth’s shadow, airmass, sky background, refraction |
| Geometry | Sign convention of the phase (evening negative, morning positive), az/el ↔ signed phase round trip, observable windows, a predicted pass |
| Photometry | Lambertian sphere vs analytic formula, earthshine, magnitudes |
| Models | The 13 catalogue models and the 20 DISCOS shapes build with sensible sizes; ISS, Tiangong and Hubble dimensions; array width from the DISCOS cross-section; cross-sections of a cube and a sphere |
| Orbits | TLE reading, ISS altitude and period, immobility of a GEO in the sky, look angles identical to satellite.js, LVLH attitude |
| Observer in orbit | Range, no atmosphere, line of sight hidden by the Earth (independent check), Sun exclusion |
| CCSDS | TDM round trip, OEM vs SGP4 within 50 m, AEM round trip and attitude law |
| Measurements | CSV and stations files, station recovered from the angles (J2000 or of date), measured line of sight |
| Analysis | Free tumbling (energy and angular momentum, stable and unstable axes), periodogram on a noisy irregular signal, glint geometry, Nelder–Mead, facet extraction, attitude-state classes, joint fit of two series from two stations |
| Materials | Measured BRDF: flat table for a Lambertian surface, parametric fit recovering the model |
| Sensor | Catalogue (field, pixel scale, CCD / CMOS binning), saturation; photometric bands (solar colours, material colours, extinction, photons) |
| Tools | Synthetic dataset and validation runners, DISCOS export reader |
| Analysis module | Period of a noisy track, full turn of a double-peaked curve, red noise not called periodic; file kinds and station types; Lambertian diameter round trip; on the demonstration history: the three behaviours, spin-down and abrupt change, equinox glints, the attitude upset found by the monitor and no false alarm, equivalent diameter |
| Analysis preview | File kinds; the diagnostic of a full history agrees with the analysis on objects, tracks and points, and says what is missing (stations, range, history); a TDM read with its phase angles computed from the geometry; the demonstration results up to date with the analyses, its points rebuilt exactly; no analysis method among the modules of the preview |
| Licensing | Keys issued by the command-line tool; altered, expired, foreign keys, unknown plans, other payload formats and prefixes refused; what each plan contains (Trial: nothing in, nothing out); builds and add-ons |
| Accounts server | Password hashing, sign-in and its brake, redirection kept inside the site, forms from another site refused, files outside the build refused; modules sent only within the licence (the Analysis workspace to the Operations plan and to the single feature, the preview and the report pages it shares to every plan, source maps never), ended licence, invitation by e-mail and single-use link, roles and seats, a disabled member signed out, password reset answering the same for unknown addresses, password change closing the other sessions, log retention and deletion of ended organisations; server licence capping plans, add-ons, end dates and seats, no application without a valid key, no key needed on localhost only |
| Browsers | WebGL 2 with float rendering, curves in a worker or on the page, the same magnitude in Chrome, Edge, Firefox and WebKit (npm run browsers) |