@mechris3/glassbox 0.1.1 → 0.1.2
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.
- package/README.md +36 -8
- package/dist/bin/glassbox.js +23 -4
- package/dist/bin/glassbox.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,11 +28,27 @@ npx glassbox run # Headless batch run (for CI)
|
|
|
28
28
|
|
|
29
29
|
```
|
|
30
30
|
my-tests/
|
|
31
|
+
├── package.json ← dependency + scripts
|
|
31
32
|
├── glassbox.config.ts ← created by init
|
|
32
33
|
├── journeys/ ← put your journey files here
|
|
33
34
|
└── page-objects/ ← put your page objects here
|
|
34
35
|
```
|
|
35
36
|
|
|
37
|
+
The generated `package.json` includes convenience scripts:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm run serve # Start the visual dashboard at http://localhost:3001
|
|
41
|
+
npm run run # Run all journeys headless (exit 0 = pass, 1 = fail)
|
|
42
|
+
npm run run:headed # Run with a visible browser window
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
After running `glassbox init`, install dependencies and you're ready:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm install
|
|
49
|
+
npm run serve
|
|
50
|
+
```
|
|
51
|
+
|
|
36
52
|
You can set this up as a standalone project or as a subfolder within an existing frontend project:
|
|
37
53
|
|
|
38
54
|
```
|
|
@@ -157,23 +173,35 @@ export default defineConfig({
|
|
|
157
173
|
});
|
|
158
174
|
```
|
|
159
175
|
|
|
160
|
-
Hook files export a default async function:
|
|
176
|
+
Hook files export a default async function. Use them for any setup/teardown your tests need — resetting databases, seeding test data, clearing caches, etc:
|
|
161
177
|
|
|
162
178
|
```typescript
|
|
163
179
|
// helpers/before-each.ts
|
|
164
180
|
import type { HookContext } from '@mechris3/glassbox';
|
|
165
181
|
|
|
166
182
|
export default async function(context: HookContext) {
|
|
167
|
-
//
|
|
168
|
-
await fetch(
|
|
183
|
+
// Call your test API to reset state (can be any URL, not necessarily the target app)
|
|
184
|
+
await fetch('http://localhost:4000/api/test-data/reset', { method: 'POST' });
|
|
185
|
+
|
|
186
|
+
// Or seed specific data
|
|
187
|
+
await fetch('http://localhost:4000/api/test-data/seed', {
|
|
188
|
+
method: 'POST',
|
|
189
|
+
headers: { 'Content-Type': 'application/json' },
|
|
190
|
+
body: JSON.stringify({ users: ['testuser'], projects: 3 }),
|
|
191
|
+
});
|
|
169
192
|
}
|
|
170
193
|
```
|
|
171
194
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
195
|
+
`targetUrl` comes from the dashboard settings panel (the URL field) or the `--url` flag when using the CLI. It's the URL of the app you're testing.
|
|
196
|
+
|
|
197
|
+
`HookContext` contains:
|
|
198
|
+
|
|
199
|
+
| Property | Available in | Description |
|
|
200
|
+
|----------|-------------|-------------|
|
|
201
|
+
| `targetUrl` | All hooks | The app URL being tested |
|
|
202
|
+
| `journeyName` | beforeEach, afterEach | Display name of the current journey |
|
|
203
|
+
| `journeyPath` | beforeEach, afterEach | File path of the current journey |
|
|
204
|
+
| `journeyStatus` | afterEach only | `'passed'` or `'failed'` |
|
|
177
205
|
|
|
178
206
|
## CLI Commands
|
|
179
207
|
|
package/dist/bin/glassbox.js
CHANGED
|
@@ -107,7 +107,7 @@ program
|
|
|
107
107
|
console.log(' glassbox.config.ts already exists — skipping.\n');
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
|
-
const configContent = `import { defineConfig } from 'glassbox';
|
|
110
|
+
const configContent = `import { defineConfig } from '@mechris3/glassbox';
|
|
111
111
|
|
|
112
112
|
export default defineConfig({
|
|
113
113
|
journeys: './journeys/**/*.journey.ts',
|
|
@@ -121,8 +121,26 @@ export default defineConfig({
|
|
|
121
121
|
},
|
|
122
122
|
});
|
|
123
123
|
`;
|
|
124
|
+
const packageContent = JSON.stringify({
|
|
125
|
+
name: 'my-glassbox-tests',
|
|
126
|
+
version: '1.0.0',
|
|
127
|
+
private: true,
|
|
128
|
+
type: 'module',
|
|
129
|
+
scripts: {
|
|
130
|
+
serve: 'glassbox serve',
|
|
131
|
+
run: 'glassbox run',
|
|
132
|
+
'run:headed': 'glassbox run --headed',
|
|
133
|
+
},
|
|
134
|
+
dependencies: {
|
|
135
|
+
'@mechris3/glassbox': '^0.1.0',
|
|
136
|
+
},
|
|
137
|
+
}, null, 2);
|
|
124
138
|
writeFileSync('glassbox.config.ts', configContent);
|
|
125
139
|
console.log(' ✦ Created glassbox.config.ts');
|
|
140
|
+
if (!existsSync('package.json')) {
|
|
141
|
+
writeFileSync('package.json', packageContent);
|
|
142
|
+
console.log(' ✦ Created package.json');
|
|
143
|
+
}
|
|
126
144
|
if (!existsSync('journeys')) {
|
|
127
145
|
mkdirSync('journeys', { recursive: true });
|
|
128
146
|
console.log(' ✦ Created journeys/ directory');
|
|
@@ -132,9 +150,10 @@ export default defineConfig({
|
|
|
132
150
|
console.log(' ✦ Created page-objects/ directory');
|
|
133
151
|
}
|
|
134
152
|
console.log('\n Next steps:');
|
|
135
|
-
console.log(' 1.
|
|
136
|
-
console.log(' 2. Write
|
|
137
|
-
console.log(' 3.
|
|
153
|
+
console.log(' 1. npm install');
|
|
154
|
+
console.log(' 2. Write page objects in page-objects/');
|
|
155
|
+
console.log(' 3. Write journeys in journeys/');
|
|
156
|
+
console.log(' 4. npm run serve\n');
|
|
138
157
|
});
|
|
139
158
|
program.parse();
|
|
140
159
|
//# sourceMappingURL=glassbox.js.map
|
package/dist/bin/glassbox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glassbox.js","sourceRoot":"","sources":["../../bin/glassbox.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"glassbox.js","sourceRoot":"","sources":["../../bin/glassbox.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED