- Order confirmed
-
- The generated UI should show a confirmation card and reveal shipping
- details after interaction.
-
-
-
-
-
- Status
- - Paid
-
-
-
- Shipping
- - Arrives Friday
-
-
-
- Viewport
- - unknown
-
-
-
-
-
-
diff --git a/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts b/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts
new file mode 100644
index 0000000000..41e4e63287
--- /dev/null
+++ b/packages/genui/ui-judge/tests/helpers/playground-preview-server.ts
@@ -0,0 +1,272 @@
+// Copyright 2026 The Lynx Authors. All rights reserved.
+// Licensed under the Apache License Version 2.0 that can be found in the
+// LICENSE file in the root directory of this source tree.
+import { spawn } from 'node:child_process';
+import { existsSync } from 'node:fs';
+import { createServer } from 'node:net';
+import { dirname, relative, resolve } from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+interface PlaygroundDemoPreviewOptions {
+ demoId: string;
+ demoUrl?: string;
+ protocol?: 'a2ui' | 'openui';
+ speed?: number;
+ theme?: 'light' | 'dark';
+}
+
+export interface PlaygroundPreviewServer {
+ readonly baseUrl: string;
+ createDemoPreviewUrl(options: PlaygroundDemoPreviewOptions): string;
+ dispose(): Promise