🧪 Test Hub
testing: Demo target v3.0.0 · built-in demo site

DEMO-T10 TS TypeScript demo (node engine)

Edit Load test Duplicate

Runs under the TS engine's @playwright/test while the Python hub provides queue, history, schedules and charts. Requires the TS engine bundle at /opt/pw-ts.

demotypescript DEMO-T10__typescript_demo.spec.ts

Runs
5
Pass rate
100%
5 passed / 0 failed
Avg duration
4s
p95 4s
Estimate
4s
avg of last 10 judged runs
Flakiness
0.00
0 stable · 1 alternates
Current streak
5
passed

Last 5 results newest on the right — click a square to open that run

Duration per run point color = outcome; dashed = 7-run average; click a point to open the run

Step timing trends the same step compared across the last 5 runs — slowest steps first, one line each

How long it takes distribution of 5 runs — two humps mean two different behaviours hiding behind one average

fastest 4s · slowest 4s

Why this test failed grouped by message, last 90 days

No failures recorded. 👍

Outcomes by target version

What this test does plain language, derived from the code

    No steps found.
Show the code
import { test, expect } from '@playwright/test';

// A TypeScript test running through the PYTHON hub: same demo target, same
// history/charts/schedules -- but executed by the node @playwright/test
// engine at /opt/pw-ts. baseURL is the hub's target.url, so relative
// page.goto() works here exactly like ctx.base_url does in Python tests --
// './' is the target itself. Never '/': that is the server's root, which
// for a target under a path (the built-in demo is /demo/) is somewhere else.
test('demo page loads and has its title', async ({ page }) => {
  await page.goto('./');
  await expect(page).toHaveTitle(/Demo/i);
  // same lesson as DEMO-001: assert we are still ON the target, so an SSO
  // bounce or a maintenance page cannot pass by also having a title
  await expect(page).toHaveURL(/\/demo\//);
});

test('the demo form round-trips a request', async ({ page }) => {
  await page.goto('./');
  await test.step('fill and submit', async () => {
    await page.fill('#name', 'ts through python hub');
    await page.click('#submit-btn');
  });
  await expect(page.locator('#result')).toContainText('ts through python hub');
});

All runs

RunStatusQueuedDuration VersionTriggerBatch
#428 passed 2026-09-25 00:23:39 4s 3.0.0 cli-adopted 7 tests (terminal)
#421 passed 2026-09-25 00:23:08 4s 2.1.0 cli-adopted 7 tests (terminal)
#414 passed 2026-09-25 00:22:38 4s 2.0.0 cli-adopted 7 tests (terminal)
#407 passed 2026-09-25 00:22:11 4s 1.1.0 cli-adopted 7 tests (terminal)
#400 passed 2026-09-25 00:21:43 4s 1.0.0 cli-adopted 7 tests (terminal)