Uncommitted sx-tools changes: WASM bundles, Playwright specs, engine fixes

WASM browser bundles rebuilt with latest kernel. Playwright test specs
updated (helpers, navigation, handler-responses, hypermedia-handlers,
isomorphic, SPA navigation). Engine/boot/orchestration SX files updated.
Handler examples and not-found page refreshed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 18:58:38 +00:00
parent 14d5158b06
commit 6d5c410d68
28 changed files with 375 additions and 171 deletions

View File

@@ -63,16 +63,20 @@ test.describe('SPA navigation', () => {
await expect(page.locator('#sx-nav')).toContainText('Click to Load');
});
test('render error scoped to #sx-content via error-boundary', async ({ page }) => {
test('content renders inside error-boundary after SPA nav', async ({ page }) => {
await page.goto(BASE_URL + '/sx/(geography.(hypermedia.(example)))', { waitUntil: 'networkidle' });
await page.click('a[sx-get*="click-to-load"]');
await page.waitForTimeout(4000);
// Error should be inside the error boundary within #sx-content
// Content should render inside an error boundary (no render error)
const boundary = page.locator('#sx-content [data-sx-boundary]');
await expect(boundary).toHaveCount(1, { timeout: 2000 }).catch(() => {});
await expect(page.locator('#sx-content')).toContainText('Load', { timeout: 3000 });
// No render errors should be visible
const errors = page.locator('#sx-content .sx-render-error');
await expect(errors).toHaveCount(1);
await expect(errors).toContainText('Render error');
await expect(errors).toHaveCount(0);
// Header should still be intact
await expect(page.locator('[data-sx-island="layouts/header"]')).toHaveCount(1);