Merge branch 'feat/hud-2d' into feat/hud-about

This commit is contained in:
2026-08-21 15:20:03 +02:00
4 changed files with 19 additions and 7 deletions
+4 -1
View File
@@ -14,7 +14,10 @@ test.describe('Bookmarks', () => {
// A later visit, on a different page: kept places outlive the one they were kept from.
await page.goto('/');
await expect(page.getByTestId('scene-canvas')).toBeVisible();
// Generously timed on purpose: this suite shares one software rasterizer, and the boot
// it waits on is the slowest thing in it. The default five seconds is a coin toss
// under a full parallel run.
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
await page.getByRole('tab', { name: 'Bookmarks' }).click();
const kept = page.locator('#dock-panel-bookmarks li').filter({ hasText: 'Earth' });
+5 -2
View File
@@ -9,7 +9,10 @@ test.describe('Galaxy view', () => {
test('boots the app, initializes the 3D scene, and starts in the galaxy overview (no system controls shown)', async ({ page }) => {
await page.goto('/?stars=4000');
await expect(page.getByTestId('scene-canvas')).toBeVisible();
// Generously timed on purpose: this suite shares one software rasterizer, and the boot
// it waits on is the slowest thing in it. The default five seconds is a coin toss
// under a full parallel run.
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
// The dock's tab strip is up before the scene finishes booting; the search is one tab in it.
await expect(page.getByRole('tab', { name: 'Search' })).toBeVisible();
await expect(backButtonLocator(page)).toHaveCount(0);
@@ -23,7 +26,7 @@ test.describe('Galaxy view', () => {
// up to more than the default per-test budget.
test.setTimeout(90_000);
await page.goto('/?stars=4000');
await expect(page.getByTestId('scene-canvas')).toBeVisible();
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
await page.getByRole('button', { name: 'Milky Way' }).click();
+5 -2
View File
@@ -34,7 +34,10 @@ test.describe('Plan view', () => {
await expect(plan).toHaveAttribute('aria-pressed', 'true');
// The scene survives the swap: it is still this system, still labelled, still readable.
await expect(page.getByTestId('scene-canvas')).toBeVisible();
// Generously timed on purpose: this suite shares one software rasterizer, and the boot
// it waits on is the slowest thing in it. The default five seconds is a coin toss
// under a full parallel run.
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
await expect.poll(spread, { timeout: 30_000 }).toBeGreaterThan(2);
await page.getByRole('tab', { name: 'Readout' }).click();
await expect(page.getByTestId('hud-title')).toHaveText('Sol');
@@ -48,7 +51,7 @@ test.describe('Plan view', () => {
test('keeps the scale ladder honest about how far out the view is', async ({ page }) => {
test.setTimeout(90_000);
await page.goto('/?stars=4000');
await expect(page.getByTestId('scene-canvas')).toBeVisible();
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
await expect(page.getByTestId('hud-current-level')).toHaveText('Solar Neighbourhood', { timeout: 30_000 });
await page.getByRole('tab', { name: 'Display' }).click();
+5 -2
View File
@@ -4,7 +4,10 @@ test.describe('Route plotting', () => {
test('chains one star to another through the crossings a chosen range allows', async ({ page }) => {
test.setTimeout(90_000);
await page.goto('/?stars=4000');
await expect(page.getByTestId('scene-canvas')).toBeVisible();
// Generously timed on purpose: this suite shares one software rasterizer, and the boot
// it waits on is the slowest thing in it. The default five seconds is a coin toss
// under a full parallel run.
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
await page.getByRole('tab', { name: 'Routes' }).click();
@@ -32,7 +35,7 @@ test.describe('Route plotting', () => {
test('says what range a crossing would need, rather than only that there is none', async ({ page }) => {
test.setTimeout(90_000);
await page.goto('/?stars=4000');
await expect(page.getByTestId('scene-canvas')).toBeVisible();
await expect(page.getByTestId('scene-canvas')).toBeVisible({ timeout: 30_000 });
await page.getByRole('tab', { name: 'Routes' }).click();
await page.locator('#route-from').fill('Sol');