Skip to main content
← PROGRAM ARCHIVEFULL ARCHIVE RECORD
ALLOWLISTED DURABLE SOURCE

build010.spec.ts

tests/build010.spec.ts

This is the retained record itself—not a chat summary. It is exposed because it materially documents the research, method, evidence, audit, production, planning or release history of The 100.

import {test,expect} from '@playwright/test';
test.describe('Build 010 idea skeleton',()=>{
 test('default schema is structurally valid',async({page})=>{await page.goto('/100-builds/010/a');await expect(page.getByRole('heading',{name:'VALID SKELETON'})).toBeVisible();await expect(page.getByText(/Structural readiness/)).toContainText('100%');});
 test('removing an entity exposes structural errors',async({page})=>{await page.goto('/100-builds/010/a');await page.getByRole('button',{name:'REMOVE ENTITY'}).first().click();await expect(page.getByRole('heading',{name:'LOOSE LANGUAGE'})).toBeVisible();await expect(page.getByText(/at least two distinct entity types/)).toBeVisible();});
 test('reset is truthful and local',async({page})=>{await page.goto('/100-builds/010/a');await page.getByRole('button',{name:'RESET / START EMPTY'}).click();await expect(page.getByRole('heading',{name:'LOOSE LANGUAGE'})).toBeVisible();await expect(page.getByText(/No schema data was stored/)).toBeVisible();});
 test('exports a local skeleton',async({page})=>{await page.goto('/100-builds/010/a');const dl=page.waitForEvent('download');await page.getByRole('button',{name:'EXPORT SKELETON'}).click();expect((await dl).suggestedFilename()).toBe('idea-skeleton.json');});
 test('canonical room is active and 012 is active; 015 is planned',async({page})=>{await page.goto('/100-builds/010');await expect(page.getByText('BUILD 010 / 100 · IN THE LAB')).toBeVisible();await expect(page.getByRole('link',{name:/OPEN THE TOOL/})).toHaveAttribute('href',/\/100-builds\/010\/a\/?$/);await page.goto('/100-builds/015');await expect(page.getByText('BUILD 015 / 100 · COMING NEXT')).toBeVisible();});
 test('functional artifact fits 320 CSS pixels',async({page})=>{await page.setViewportSize({width:320,height:800});await page.goto('/100-builds/010/a');await expect(page.getByRole('button',{name:'EXPORT SKELETON'})).toBeVisible();expect(await page.evaluate(()=>document.documentElement.scrollWidth>document.documentElement.clientWidth)).toBe(false);});
});
test.describe('Build 010 structure graph',()=>{
 test('stages change structure, not decoration',async({page})=>{await page.goto('/100-builds/010/b');await expect(page.getByRole('button',{name:/1. LOOSE LANGUAGE/})).toHaveAttribute('aria-pressed','true');await page.getByRole('button',{name:/3. VALIDATED SKELETON/}).click();await expect(page.getByRole('heading',{name:'VALIDATED SKELETON'})).toBeVisible();await expect(page.getByText(/Project.location/)).toBeVisible();});
 test('boundary remains explicit',async({page})=>{await page.goto('/100-builds/010/b');await page.getByRole('button',{name:/3. VALIDATED SKELETON/}).click();await expect(page.getByText(/does not decide whether the structure is true/)).toBeVisible();});
});