mirror of
https://github.com/luxfi/tel.git
synced 2026-10-30 15:15:54 +00:00
Telecom keeps its own console rather than becoming a section of the general cloud one: sidebar of suites, top bar, highlight band, explore grid, what's new. The reference leans on a green gradient and coloured chips; this is inverted to the brand — black ground, white type, hairlines — and hue is reserved for STATE, which is the only thing on the page anyone has to act on. The wordmark is LUX tel and the AI affordance is the triangle rather than a sparkle: it is the one glyph this product already owns. The suites are PROJECTED from the catalog, not a second list. A console that lists different products from the site that sold them is how the two drift, and the drift is always found by a customer. An unknown slug throws at import rather than quietly dropping a nav entry. One bundle, three hosts. console.lux.tel serves the same image with the console at its root, so the callback is derived from the ORIGIN rather than hardcoded — IAM validates redirect_uri exactly, and a constant would send half the sign-ins to the other host mid-flow. Both spellings are registered on the lux-tel application. Route groups split the chrome: (site) carries the header and footer, (console) carries the sidebar and top bar, and the root layout is html and body. Imports moved to the @/ alias the tsconfig already declared and nothing used — adding a route group had just broken fifteen relative paths, and it can no longer. Two harness defects fixed, both of which had been reporting a broken product. The Playwright web server was still `python3 -m http.server`, which 301s /console to /console/ and answers with a DIRECTORY LISTING — the console rendered as a file index and eight of ten pages were unreachable. And reuseExistingServer was true, so a stale server from an earlier run got adopted silently. The suite is 10/10 in 5.4s where it was 38. Co-authored-by: Hanzo Dev <[email protected]>
36 lines
1.3 KiB
TypeScript
36 lines
1.3 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test'
|
|
|
|
/*
|
|
Runs against the static export by default; point it at the deployed site with
|
|
BASE_URL=https://lux.tel pnpm test:e2e
|
|
*/
|
|
const baseURL = process.env.BASE_URL ?? 'http://localhost:3000'
|
|
|
|
export default defineConfig({
|
|
testDir: './e2e',
|
|
fullyParallel: true,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: process.env.CI ? 2 : 0,
|
|
reporter: 'list',
|
|
use: {
|
|
baseURL,
|
|
trace: 'on-first-retry',
|
|
},
|
|
projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }],
|
|
webServer: process.env.BASE_URL
|
|
? undefined
|
|
: {
|
|
// `python3 -m http.server` cannot serve this export: `next export` writes
|
|
// console.html AND a console/ directory beside it, and python answers
|
|
// /console with a 301 to /console/ and then a DIRECTORY LISTING. Eight of
|
|
// ten pages were unreachable and the console rendered as a file index.
|
|
// e2e/serve.mjs resolves the way the real static server does.
|
|
command: 'node e2e/serve.mjs',
|
|
url: 'http://localhost:3000',
|
|
// FALSE, deliberately: `true` reuses whatever already holds :3000, which
|
|
// twice has been a stale server from an earlier run answering with the
|
|
// listing above — a failure nobody reads as "wrong server".
|
|
reuseExistingServer: false,
|
|
},
|
|
})
|