@zibby/skills 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,154 @@
1
+ ---
2
+ sidebar_position: 2
3
+ title: Browser test recipe (zibby test)
4
+ ---
5
+
6
+ # `zibby test` — browser test recipe
7
+
8
+ The browser-test recipe takes a plain-English spec, drives a real browser via a coding agent (Cursor / Claude / Codex / Gemini), runs the assertions, and produces a Playwright script + verification video.
9
+
10
+ It's a worked example of what the Zibby platform does — every step is a regular workflow node with Zod-validated handoff. You can read the source, fork it, or build your own variation.
11
+
12
+ ## Quick start
13
+
14
+ ```bash
15
+ # Inline spec
16
+ zibby test "Go to https://example.com and verify the title is 'Example Domain'"
17
+
18
+ # Spec file
19
+ zibby test test-specs/login.txt
20
+
21
+ # With a specific agent
22
+ zibby test test-specs/checkout.txt --agent claude
23
+ ```
24
+
25
+ ## What it produces
26
+
27
+ ```
28
+ .zibby/output/sessions/<session-id>/
29
+ ├── execute_live/
30
+ │ ├── result.json ← Zod-validated assertions + agent reasoning
31
+ │ └── browser-trace/ ← Playwright trace files
32
+ ├── generate_script/
33
+ │ ├── result.json ← parsed script + metadata
34
+ │ └── generated.spec.js ← reusable Playwright test
35
+ └── video/
36
+ └── recording.webm ← visual verification
37
+ ```
38
+
39
+ Open the session in [Zibby Studio](https://zibby.app/studio) to scrub through the run, swap the prompt, re-execute any node.
40
+
41
+ ## The graph (this is just a Zibby workflow)
42
+
43
+ Under the hood, `zibby test` is a 3-node graph:
44
+
45
+ ```
46
+ ┌──────────────┐ ┌──────────────────┐ ┌─────────────────┐
47
+ │ preflight │ → │ execute_live │ → │ generate_script │
48
+ │ │ │ │ │ │
49
+ │ extract │ │ agent drives │ │ produce │
50
+ │ assertions │ │ browser via MCP, │ │ Playwright │
51
+ │ from spec │ │ records video │ │ test file │
52
+ └──────────────┘ └──────────────────┘ └─────────────────┘
53
+ │ │ │
54
+ Zod out Zod out Zod out
55
+ (Assertions) (BrowserResult) (PlaywrightScript)
56
+ ```
57
+
58
+ Each node is a real `WorkflowGraph` node. The agent in `execute_live` does its own tool loop (browser navigation, click, assertion checking) — Zibby just defines the contract.
59
+
60
+ ## Customizing
61
+
62
+ **Use a different agent per run:**
63
+ ```bash
64
+ zibby test test-specs/checkout.txt --agent claude # Claude Code
65
+ zibby test test-specs/checkout.txt --agent cursor # Cursor (default)
66
+ zibby test test-specs/checkout.txt --agent codex # OpenAI Codex
67
+ ```
68
+
69
+ **Run only one node** (e.g. just regenerate the script from an existing run):
70
+ ```bash
71
+ zibby test --session 1768974629717 --node generate_script
72
+ ```
73
+
74
+ **Headless vs headed:**
75
+ ```bash
76
+ zibby test test-specs/login.txt # headed (default — see the browser)
77
+ zibby test test-specs/login.txt --headless # headless mode (for CI)
78
+ ```
79
+
80
+ ## Forking the recipe
81
+
82
+ If the built-in recipe doesn't fit your case, scaffold a custom workflow and copy the structure:
83
+
84
+ ```bash
85
+ zibby workflow new my-test-pipeline
86
+ ```
87
+
88
+ Then in `graph.mjs`, define your own nodes:
89
+
90
+ ```js
91
+ import { WorkflowGraph, z } from '@zibby/agent-workflow';
92
+
93
+ const AssertionsSchema = z.object({
94
+ assertions: z.array(z.string()),
95
+ baseUrl: z.string().url(),
96
+ });
97
+
98
+ const BrowserResultSchema = z.object({
99
+ passed: z.boolean(),
100
+ details: z.array(z.object({ assertion: z.string(), passed: z.boolean() })),
101
+ videoPath: z.string().optional(),
102
+ });
103
+
104
+ const graph = new WorkflowGraph();
105
+
106
+ graph.addNode('preflight', {
107
+ agent: 'claude',
108
+ prompt: ({ spec }) => `Extract assertions and base URL from: ${spec}`,
109
+ outputSchema: AssertionsSchema,
110
+ });
111
+
112
+ graph.addNode('execute_live', {
113
+ agent: 'cursor',
114
+ skills: ['browser'],
115
+ prompt: ({ preflight }) => `Navigate to ${preflight.baseUrl} and verify: ${preflight.assertions.join('; ')}`,
116
+ outputSchema: BrowserResultSchema,
117
+ });
118
+
119
+ graph.addEdge('preflight', 'execute_live');
120
+ graph.setEntryPoint('preflight');
121
+
122
+ export default graph;
123
+ ```
124
+
125
+ That's the platform. The recipe is just a starter.
126
+
127
+ ## CI/CD
128
+
129
+ ```yaml
130
+ - name: Run Zibby test
131
+ env:
132
+ ZIBBY_USER_TOKEN: ${{ secrets.ZIBBY_USER_TOKEN }}
133
+ run: |
134
+ npx @zibby/cli test test-specs/checkout.txt --headless
135
+ ```
136
+
137
+ For workflows triggered remotely (rather than per-CI-run), use [`workflow trigger`](../cloud/triggering) on a deployed graph.
138
+
139
+ ## Why this is different from Playwright codegen / a basic LLM script
140
+
141
+ | | Playwright codegen | LLM-only script | Zibby test recipe |
142
+ |---|---|---|---|
143
+ | Plain-English input | ❌ | ✅ | ✅ |
144
+ | Real browser execution | ✅ | ❌ (just generates code) | ✅ |
145
+ | Coding-agent driven | ❌ | partial | ✅ Cursor / Claude / Codex |
146
+ | Multi-step verification | ❌ | ❌ | ✅ Zod-validated nodes |
147
+ | Replayable + debuggable | ❌ | ❌ | ✅ Studio |
148
+ | Vendor-neutral | N/A | locked to one LLM | swap agent per run |
149
+
150
+ ## See also
151
+
152
+ - [Recipes overview](./index)
153
+ - [Concepts: graph](../concepts/graph) — the primitives this recipe uses
154
+ - [Cloud triggering](../cloud/triggering) — fire workflows from CI/CD
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zibby/skills",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Built-in skill definitions for Zibby test automation framework",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,7 +28,7 @@
28
28
  ],
29
29
  "author": "Zibby",
30
30
  "license": "MIT",
31
- "homepage": "https://zibby.app",
31
+ "homepage": "https://zibby.dev",
32
32
  "repository": {
33
33
  "type": "git",
34
34
  "url": "https://github.com/ZibbyHQ/zibby-agent"
@@ -46,7 +46,7 @@
46
46
  "node": ">=18.0.0"
47
47
  },
48
48
  "dependencies": {
49
- "@zibby/agent-workflow": "^0.1.2"
49
+ "@zibby/agent-workflow": "^0.3.0"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "@zibby/core": ">=0.1.44"