@cementic/cementic-test 0.2.5 β 0.2.7
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/CODE_OF_CONDUCT.md +46 -0
- package/CONTRIBUTING.md +61 -0
- package/README.md +229 -301
- package/dist/cli.js +666 -186
- package/dist/cli.js.map +1 -1
- package/package.json +6 -2
- package/scripts/postinstall-banner.cjs +14 -0
package/README.md
CHANGED
|
@@ -1,448 +1,379 @@
|
|
|
1
|
-
# CementicTest CLI
|
|
1
|
+
# π CementicTest CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Turn plain English into **production-ready Playwright tests** β instantly.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
No setup headaches. No framework confusion. Just run and automate.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## β‘ Run instantly (no install)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx @cementic/cementic-test
|
|
9
13
|
```
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
Works even if your npm environment isnβt perfectly configured.
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
---
|
|
14
18
|
|
|
15
|
-
|
|
16
|
-
- Generates Markdown test cases manually or with AI
|
|
17
|
-
- Supports URL-aware case generation with live page capture
|
|
18
|
-
- Normalizes case files into structured JSON
|
|
19
|
-
- Generates Playwright specs and POM classes from normalized cases
|
|
20
|
-
- Avoids overwriting existing generated page-object files
|
|
21
|
-
- Runs Playwright tests through a CLI wrapper
|
|
22
|
-
- Opens Playwright HTML reports
|
|
23
|
-
- Serves Allure reports if Allure is installed in the target project
|
|
24
|
-
- Generates a GitHub Actions workflow for Playwright CI
|
|
19
|
+
## π‘ What this does
|
|
25
20
|
|
|
26
|
-
|
|
21
|
+
CementicTest converts:
|
|
27
22
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
π Plain English
|
|
24
|
+
π Into structured test cases
|
|
25
|
+
π Into Playwright specs + Page Objects
|
|
26
|
+
π Then runs them
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
All from your terminal.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## π§ Why itβs different
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
* No framework setup required
|
|
35
|
+
* No Playwright expertise needed
|
|
36
|
+
* No manual scripting to get started
|
|
37
|
+
* AI-assisted test generation
|
|
38
|
+
* Built-in Page Object Model (POM) structure
|
|
39
|
+
* Works from **day one**
|
|
37
40
|
|
|
38
|
-
|
|
39
|
-
- npm
|
|
41
|
+
---
|
|
40
42
|
|
|
41
|
-
##
|
|
43
|
+
## π§ͺ What you can do
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
* Generate test cases (manual or AI)
|
|
46
|
+
* Capture real websites and generate tests
|
|
47
|
+
* Convert cases β JSON β Playwright code
|
|
48
|
+
* Run tests instantly
|
|
49
|
+
* Generate CI workflows
|
|
50
|
+
* View reports (Playwright + Allure)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## β‘ 60-second quick start
|
|
44
55
|
|
|
45
56
|
```bash
|
|
46
|
-
|
|
47
|
-
cd demo-js
|
|
48
|
-
ct tc --feature "Login form" --count 2
|
|
49
|
-
ct normalize ./cases --and-gen --lang js
|
|
50
|
-
ct test
|
|
57
|
+
npx @cementic/cementic-test
|
|
51
58
|
```
|
|
52
59
|
|
|
53
|
-
|
|
60
|
+
Then:
|
|
54
61
|
|
|
55
62
|
```bash
|
|
56
|
-
ct new demo
|
|
57
|
-
cd demo
|
|
58
|
-
|
|
59
|
-
ct
|
|
63
|
+
ct new demo
|
|
64
|
+
cd demo
|
|
65
|
+
|
|
66
|
+
ct tc --feature "Login form" --count 2
|
|
67
|
+
ct normalize ./cases --and-gen
|
|
60
68
|
ct test
|
|
61
69
|
```
|
|
62
70
|
|
|
63
|
-
|
|
71
|
+
Done. You just created and ran automation.
|
|
64
72
|
|
|
65
|
-
|
|
73
|
+
---
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
## π Generate tests from a real website
|
|
68
76
|
|
|
69
77
|
```bash
|
|
70
|
-
ct
|
|
71
|
-
ct new my-suite --lang ts
|
|
72
|
-
ct new my-suite --no-browsers
|
|
78
|
+
ct tc url https://mini-bank.testamplify.com/login --ai --feature "Login" --count 2
|
|
73
79
|
```
|
|
74
80
|
|
|
75
|
-
|
|
81
|
+
This will:
|
|
76
82
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
- `pages/FormPage.js`
|
|
82
|
-
- `tests/login.spec.js`
|
|
83
|
-
- `tests/dashboard.spec.js`
|
|
84
|
-
- `--lang ts`: TypeScript template with:
|
|
85
|
-
- `pages/LandingPage.ts`
|
|
86
|
-
- `tests/landing.spec.ts`
|
|
87
|
-
- `tsconfig.json`
|
|
88
|
-
- `playwright.config.ts`
|
|
83
|
+
* Capture the page
|
|
84
|
+
* Understand elements
|
|
85
|
+
* Generate realistic test scenarios
|
|
86
|
+
* Produce runnable Playwright tests
|
|
89
87
|
|
|
90
|
-
|
|
88
|
+
Important:
|
|
91
89
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
- runs `npm install`
|
|
96
|
-
- optionally runs `npx playwright install`
|
|
90
|
+
* Live capture resolves Playwright from your current project first
|
|
91
|
+
* If you are inside a project created with `ct new`, `ct tc url --ai` uses that project's local `@playwright/test`
|
|
92
|
+
* If Playwright is missing or Chromium is not installed, the CLI now prints the exact next step instead of failing with a package-resolution stack trace
|
|
97
93
|
|
|
98
|
-
|
|
94
|
+
---
|
|
99
95
|
|
|
100
|
-
|
|
96
|
+
## π§± How it works
|
|
101
97
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
```text
|
|
99
|
+
Plain English β Markdown Cases
|
|
100
|
+
β Normalized JSON
|
|
101
|
+
β Playwright Specs + POM
|
|
102
|
+
β Test Execution
|
|
106
103
|
```
|
|
107
104
|
|
|
108
|
-
|
|
105
|
+
---
|
|
109
106
|
|
|
110
|
-
|
|
111
|
-
ct tc --feature "Checkout" --desc "Guest checkout flow" --count 3
|
|
112
|
-
```
|
|
107
|
+
## β οΈ If install fails (important)
|
|
113
108
|
|
|
114
|
-
|
|
109
|
+
If you see something like:
|
|
115
110
|
|
|
116
|
-
```bash
|
|
117
|
-
ct tc --ai --feature "Login" --count 3
|
|
118
111
|
```
|
|
112
|
+
npm ERR! Cannot read properties of null (reading 'matches')
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
π Thatβs an npm issue, not CementicTest.
|
|
119
116
|
|
|
120
|
-
###
|
|
117
|
+
### β
Fix instantly
|
|
121
118
|
|
|
122
|
-
|
|
119
|
+
Just run:
|
|
123
120
|
|
|
124
121
|
```bash
|
|
125
|
-
|
|
126
|
-
ct tc url https://mini-bank.testamplify.com/login --ai --feature "Login" --count 2
|
|
127
|
-
ct tc url https://mini-bank.testamplify.com/login --ai --headed --feature "Login"
|
|
128
|
-
ct tc url https://mini-bank.testamplify.com/login --ai --capture-only --feature "Login"
|
|
122
|
+
npx @cementic/cementic-test
|
|
129
123
|
```
|
|
130
124
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
- captures a live page with Playwright and extracts headings, buttons, links, inputs, status regions, and selector candidates
|
|
134
|
-
- sends that captured element map to the capture-aware AI flow when `--ai` is enabled
|
|
135
|
-
- saves the full capture artifact to `.cementic/capture/capture-*.json`
|
|
136
|
-
- saves a runnable preview spec to `tests/preview/spec-preview-*.spec.cjs` when AI scenarios are generated
|
|
137
|
-
- writes `<!-- ct:url ... -->` metadata plus selector and `playwright` hints into generated Markdown so normalization and generation preserve the capture output
|
|
125
|
+
No install needed.
|
|
138
126
|
|
|
139
|
-
|
|
127
|
+
---
|
|
140
128
|
|
|
141
|
-
|
|
129
|
+
## π§° Optional install
|
|
142
130
|
|
|
143
131
|
```bash
|
|
144
|
-
|
|
145
|
-
ct normalize "cases/**/*.md"
|
|
146
|
-
ct normalize ./cases --and-gen --lang ts
|
|
132
|
+
npm install -g @cementic/cementic-test
|
|
147
133
|
```
|
|
148
134
|
|
|
149
|
-
|
|
135
|
+
If you use the global CLI, live capture still expects Playwright to be installed in the project you are working in.
|
|
150
136
|
|
|
151
|
-
|
|
152
|
-
- `title`
|
|
153
|
-
- `tags`
|
|
154
|
-
- `steps`
|
|
155
|
-
- `expected`
|
|
156
|
-
- `needs_review`
|
|
157
|
-
- `review_reasons`
|
|
158
|
-
- `source`
|
|
159
|
-
- `url`
|
|
137
|
+
---
|
|
160
138
|
|
|
161
|
-
|
|
139
|
+
## π§ͺ Core commands
|
|
162
140
|
|
|
163
|
-
|
|
164
|
-
- URL metadata is read from `<!-- ct:url ... -->` first
|
|
165
|
-
- if no metadata exists, normalization falls back to URL extraction from steps
|
|
166
|
-
|
|
167
|
-
### 5. `ct gen`
|
|
168
|
-
|
|
169
|
-
Generates Playwright specs and page-object files from normalized JSON.
|
|
141
|
+
### Create project
|
|
170
142
|
|
|
171
143
|
```bash
|
|
172
|
-
ct
|
|
173
|
-
ct gen --lang js
|
|
174
|
-
ct gen --lang ts --out tests/e2e
|
|
144
|
+
ct new my-suite
|
|
175
145
|
```
|
|
176
146
|
|
|
177
|
-
|
|
147
|
+
### Generate test cases
|
|
178
148
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
Current generator behavior:
|
|
149
|
+
```bash
|
|
150
|
+
ct tc --feature "Checkout" --count 3
|
|
151
|
+
```
|
|
183
152
|
|
|
184
|
-
|
|
185
|
-
- maps common expected-result phrases to Playwright assertions
|
|
186
|
-
- derives one POM class per feature prefix where possible
|
|
187
|
-
- uses `norm.url` for page-object `goto()`
|
|
188
|
-
- avoids duplicate navigation when setup already handles the target URL
|
|
189
|
-
- does not overwrite existing POM files
|
|
190
|
-
- emits correct relative imports for generated specs
|
|
153
|
+
### Generate from live site
|
|
191
154
|
|
|
192
|
-
|
|
155
|
+
```bash
|
|
156
|
+
ct tc url <url> --ai
|
|
157
|
+
```
|
|
193
158
|
|
|
194
|
-
|
|
159
|
+
Common setup after scaffolding:
|
|
195
160
|
|
|
196
161
|
```bash
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
162
|
+
cd my-suite
|
|
163
|
+
npm install
|
|
164
|
+
npx playwright install chromium
|
|
165
|
+
ct tc url https://example.com/login --ai --feature "Login"
|
|
200
166
|
```
|
|
201
167
|
|
|
202
|
-
|
|
168
|
+
### Normalize + generate tests
|
|
203
169
|
|
|
204
170
|
```bash
|
|
205
|
-
|
|
171
|
+
ct normalize ./cases --and-gen
|
|
206
172
|
```
|
|
207
173
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
### 7. `ct flow`
|
|
174
|
+
### Run tests
|
|
211
175
|
|
|
212
|
-
|
|
176
|
+
```bash
|
|
177
|
+
ct test
|
|
178
|
+
```
|
|
213
179
|
|
|
214
|
-
|
|
215
|
-
2. generate
|
|
216
|
-
3. test
|
|
180
|
+
### Full workflow
|
|
217
181
|
|
|
218
182
|
```bash
|
|
219
183
|
ct flow
|
|
220
|
-
ct flow ./cases
|
|
221
|
-
ct flow --lang js
|
|
222
|
-
ct flow --no-run
|
|
223
184
|
```
|
|
224
185
|
|
|
225
|
-
|
|
186
|
+
---
|
|
226
187
|
|
|
227
|
-
|
|
188
|
+
## π Reports
|
|
228
189
|
|
|
229
190
|
```bash
|
|
230
|
-
ct report
|
|
191
|
+
ct report # Playwright report
|
|
192
|
+
ct serve # Allure report (if installed)
|
|
231
193
|
```
|
|
232
194
|
|
|
233
|
-
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## βοΈ CI (GitHub Actions)
|
|
234
198
|
|
|
235
199
|
```bash
|
|
236
|
-
|
|
200
|
+
ct ci
|
|
237
201
|
```
|
|
238
202
|
|
|
239
|
-
|
|
203
|
+
Generates a ready-to-run workflow.
|
|
240
204
|
|
|
241
|
-
|
|
205
|
+
---
|
|
242
206
|
|
|
243
|
-
|
|
244
|
-
ct serve
|
|
245
|
-
```
|
|
207
|
+
## π€ AI support
|
|
246
208
|
|
|
247
|
-
|
|
209
|
+
Supports multiple providers:
|
|
248
210
|
|
|
249
|
-
|
|
250
|
-
|
|
211
|
+
* OpenAI
|
|
212
|
+
* Anthropic
|
|
213
|
+
* Gemini
|
|
214
|
+
* DeepSeek
|
|
215
|
+
* Qwen
|
|
216
|
+
* Kimi
|
|
251
217
|
|
|
252
|
-
|
|
218
|
+
Set your key:
|
|
253
219
|
|
|
254
|
-
|
|
220
|
+
```bash
|
|
221
|
+
export OPENAI_API_KEY=your_key
|
|
222
|
+
```
|
|
223
|
+
or
|
|
255
224
|
|
|
256
225
|
```bash
|
|
257
|
-
|
|
226
|
+
export ANTHROPIC_API_KEY=your_key
|
|
227
|
+
export GEMINI_API_KEY=your_key
|
|
228
|
+
export DEEPSEEK_API_KEY=your_key
|
|
229
|
+
export QWEN_API_KEY=your_key
|
|
230
|
+
export KIMI_API_KEY=your_key
|
|
258
231
|
```
|
|
259
232
|
|
|
260
|
-
|
|
233
|
+
# Optional (generic / override)
|
|
234
|
+
```bash
|
|
235
|
+
export CT_LLM_API_KEY=your_key
|
|
236
|
+
export CT_LLM_PROVIDER=openai
|
|
237
|
+
export CT_LLM_MODEL=your_model
|
|
238
|
+
export CT_LLM_BASE_URL=https://your-api-base-url
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Provider notes:
|
|
242
|
+
|
|
243
|
+
* `DEEPSEEK_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, `QWEN_API_KEY`, `KIMI_API_KEY`, and `OPENAI_API_KEY` are all detected directly
|
|
244
|
+
* `CT_LLM_API_KEY` + `CT_LLM_BASE_URL` works for OpenAI-compatible endpoints
|
|
245
|
+
* `CT_LLM_PROVIDER` can explicitly select `deepseek`, `anthropic`, `gemini`, `qwen`, `kimi`, or `openai`
|
|
246
|
+
---
|
|
261
247
|
|
|
262
|
-
|
|
263
|
-
- installs dependencies
|
|
264
|
-
- installs Playwright browsers
|
|
265
|
-
- runs `npx playwright test`
|
|
266
|
-
- uploads the Playwright HTML report as an artifact
|
|
248
|
+
## π οΈ Troubleshooting
|
|
267
249
|
|
|
268
|
-
|
|
250
|
+
### `ct tc url --ai` says Playwright is not found
|
|
269
251
|
|
|
270
|
-
|
|
252
|
+
Run:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
npm install
|
|
256
|
+
npx playwright install chromium
|
|
257
|
+
```
|
|
271
258
|
|
|
272
|
-
|
|
259
|
+
This command resolves Playwright from the active project directory first, not from the CLI's global install.
|
|
273
260
|
|
|
274
|
-
|
|
275
|
-
- `ct tc url --ai` uses the capture-aware analysis flow in `src/core/analyse.ts`
|
|
276
|
-
- manual template generation is used if AI generation fails
|
|
261
|
+
### `ct tc url --ai` says Chromium is not installed
|
|
277
262
|
|
|
278
|
-
|
|
263
|
+
Run:
|
|
279
264
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
| `ANTHROPIC_API_KEY` | Primary Anthropic key |
|
|
284
|
-
| `CT_ANTHROPIC_API_KEY` | Alternate Anthropic key |
|
|
285
|
-
| `GEMINI_API_KEY` | Gemini key for capture-aware analysis |
|
|
286
|
-
| `OPENAI_API_KEY` | OpenAI key |
|
|
287
|
-
| `QWEN_API_KEY` | Qwen key for capture-aware analysis |
|
|
288
|
-
| `KIMI_API_KEY` | Kimi / Moonshot key for capture-aware analysis |
|
|
289
|
-
| `CT_LLM_API_KEY` | Generic OpenAI-compatible API key |
|
|
290
|
-
| `CT_LLM_PROVIDER` | Optional provider override (`deepseek`, `anthropic`, `gemini`, `qwen`, `kimi`, or `openai`) |
|
|
291
|
-
| `CT_LLM_MODEL` | Model override |
|
|
292
|
-
| `CT_LLM_BASE_URL` | OpenAI-compatible base URL override |
|
|
265
|
+
```bash
|
|
266
|
+
npx playwright install chromium
|
|
267
|
+
```
|
|
293
268
|
|
|
294
|
-
|
|
269
|
+
### No AI key found
|
|
295
270
|
|
|
296
|
-
|
|
297
|
-
- Anthropic default: `claude-sonnet-4-5`
|
|
298
|
-
- Gemini default: `gemini-2.5-flash`
|
|
299
|
-
- Qwen default: `qwen-plus`
|
|
300
|
-
- Kimi default: `moonshot-v1-8k`
|
|
301
|
-
- OpenAI-compatible default: `gpt-4o-mini`
|
|
271
|
+
Set one of:
|
|
302
272
|
|
|
303
|
-
|
|
273
|
+
```bash
|
|
274
|
+
export OPENAI_API_KEY=your_key
|
|
275
|
+
export ANTHROPIC_API_KEY=your_key
|
|
276
|
+
export GEMINI_API_KEY=your_key
|
|
277
|
+
export DEEPSEEK_API_KEY=your_key
|
|
278
|
+
export QWEN_API_KEY=your_key
|
|
279
|
+
export KIMI_API_KEY=your_key
|
|
280
|
+
```
|
|
304
281
|
|
|
305
|
-
|
|
282
|
+
Or use:
|
|
306
283
|
|
|
307
|
-
|
|
284
|
+
```bash
|
|
285
|
+
export CT_LLM_API_KEY=your_key
|
|
286
|
+
export CT_LLM_BASE_URL=https://your-api-base-url
|
|
287
|
+
```
|
|
308
288
|
|
|
309
|
-
|
|
310
|
-
- extracts:
|
|
311
|
-
- page title
|
|
312
|
-
- headings
|
|
313
|
-
- buttons
|
|
314
|
-
- links
|
|
315
|
-
- inputs with label, placeholder, name, type, and `data-testid`
|
|
316
|
-
- status and alert regions
|
|
317
|
-
- selector confidence and alternative selectors
|
|
318
|
-
- builds a structured `ElementMap`
|
|
319
|
-
- passes that capture into `src/core/analyse.ts` for evidence-backed scenario generation
|
|
320
|
-
- formats markdown, JSON, and preview-spec outputs through `src/core/report.ts`
|
|
289
|
+
### Legacy macOS project setup
|
|
321
290
|
|
|
322
|
-
|
|
291
|
+
On macOS 13 and older, `ct new` installs Chromium only during Playwright browser setup to avoid unsupported WebKit failures.
|
|
323
292
|
|
|
324
|
-
|
|
293
|
+
## π Output structure
|
|
325
294
|
|
|
326
295
|
```text
|
|
327
296
|
project/
|
|
328
297
|
cases/
|
|
329
298
|
pages/
|
|
330
|
-
tests/
|
|
331
|
-
|
|
332
|
-
.cementic/
|
|
333
|
-
normalized/
|
|
334
|
-
playwright.config.js|ts
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
Typical file flow:
|
|
338
|
-
|
|
339
|
-
```text
|
|
340
|
-
cases/*.md
|
|
341
|
-
-> .cementic/normalized/*.json
|
|
342
|
-
-> tests/generated/*.spec.ts|js
|
|
343
|
-
-> pages/*.ts|js
|
|
299
|
+
tests/generated/
|
|
300
|
+
.cementic/normalized/
|
|
344
301
|
```
|
|
345
302
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
```md
|
|
349
|
-
# AUTH-001 β User can log in @smoke @auth
|
|
350
|
-
<!-- ct:url https://mini-bank.testamplify.com/login -->
|
|
351
|
-
## Steps
|
|
352
|
-
1. Navigate to https://mini-bank.testamplify.com/login
|
|
353
|
-
2. Fill in email with [EMAIL_ADDRESS]'
|
|
354
|
-
3. Fill in password with 'secret'
|
|
355
|
-
4. Click the 'Sign In' button
|
|
303
|
+
---
|
|
356
304
|
|
|
357
|
-
##
|
|
358
|
-
- Page redirects to /dashboard
|
|
359
|
-
- Welcome message is visible
|
|
360
|
-
```
|
|
305
|
+
## π― Who this is for
|
|
361
306
|
|
|
362
|
-
|
|
307
|
+
* QA engineers moving into automation
|
|
308
|
+
* Beginners learning Playwright
|
|
309
|
+
* Teams needing fast test generation
|
|
310
|
+
* Developers who want speed over setup
|
|
363
311
|
|
|
364
|
-
|
|
312
|
+
---
|
|
365
313
|
|
|
366
|
-
|
|
314
|
+
## π Philosophy
|
|
367
315
|
|
|
368
|
-
|
|
369
|
-
- capture-generated selector and assertion hints are preserved through `normalize` and `gen`
|
|
370
|
-
- generator rules still cover non-capture cases heuristically, but capture-backed cases now keep exact selectors and assertions
|
|
371
|
-
- Playwright itself is used for capture and test execution
|
|
372
|
-
- Playwright CLI and Playwright agents are not yet first-class runtime backends in this version
|
|
316
|
+
> Meaning β Structure β System β Resilience
|
|
373
317
|
|
|
374
|
-
|
|
318
|
+
CementicTest flips automation from:
|
|
375
319
|
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
cd cementic-test-cli
|
|
379
|
-
npm install
|
|
320
|
+
```
|
|
321
|
+
Code β Tests
|
|
380
322
|
```
|
|
381
323
|
|
|
382
|
-
|
|
324
|
+
to:
|
|
383
325
|
|
|
384
|
-
```
|
|
385
|
-
|
|
326
|
+
```
|
|
327
|
+
Intent β Tests
|
|
386
328
|
```
|
|
387
329
|
|
|
388
|
-
|
|
330
|
+
---
|
|
389
331
|
|
|
390
|
-
|
|
391
|
-
npm test
|
|
392
|
-
```
|
|
332
|
+
## π Links
|
|
393
333
|
|
|
394
|
-
|
|
334
|
+
* π Website: [https://cementic.testamplify.io/](https://cementic.testamplify.io/)
|
|
335
|
+
* π¬ Community: [https://t.me/+Wbx7oK7ivqgxZGJh](https://t.me/+Wbx7oK7ivqgxZGJh)
|
|
395
336
|
|
|
396
|
-
|
|
397
|
-
- `ct tc url` writes URL metadata
|
|
398
|
-
- capture-generated selector and `playwright` hints survive `normalize` and `gen`
|
|
399
|
-
- `ct normalize` and `ct gen` preserve the recent generator fixes
|
|
400
|
-
- the JavaScript scaffold contains the expected page objects and sample specs
|
|
337
|
+
---
|
|
401
338
|
|
|
402
|
-
##
|
|
339
|
+
## π§ͺ Status
|
|
403
340
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
npm link
|
|
341
|
+
* CLI: β
Production-ready
|
|
342
|
+
* Web App (Agentic UI): π§ Coming soon
|
|
407
343
|
|
|
408
|
-
|
|
409
|
-
```
|
|
344
|
+
---
|
|
410
345
|
|
|
411
|
-
|
|
346
|
+
## π¬ Final note
|
|
412
347
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
cd demo
|
|
348
|
+
You donβt need to install anything.
|
|
349
|
+
You donβt need to configure anything.
|
|
416
350
|
|
|
417
|
-
|
|
418
|
-
cd sample
|
|
351
|
+
Just run:
|
|
419
352
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
ct test
|
|
353
|
+
```bash
|
|
354
|
+
npx @cementic/cementic-test
|
|
423
355
|
```
|
|
424
356
|
|
|
425
|
-
|
|
357
|
+
And start automating.
|
|
426
358
|
|
|
427
|
-
```text
|
|
428
|
-
src/cli.ts
|
|
429
|
-
src/commands/new.ts
|
|
430
|
-
src/commands/tc.ts
|
|
431
|
-
src/commands/normalize.ts
|
|
432
|
-
src/commands/gen.ts
|
|
433
|
-
src/commands/test.ts
|
|
434
|
-
src/commands/flow.ts
|
|
435
|
-
src/core/capture.ts
|
|
436
|
-
src/core/analyse.ts
|
|
437
|
-
src/core/llm.ts
|
|
438
|
-
src/core/report.ts
|
|
439
|
-
src/core/prefix.ts
|
|
440
|
-
templates/student-framework/
|
|
441
|
-
templates/student-framework-ts/
|
|
442
|
-
```
|
|
443
359
|
|
|
444
360
|
## Changelog
|
|
445
361
|
|
|
362
|
+
### v0.2.7
|
|
363
|
+
|
|
364
|
+
- fixed project-first Playwright resolution for `ct tc url --ai`, including global and `npx` CLI usage
|
|
365
|
+
- added clearer capture failure categories and setup guidance for missing Playwright, missing browsers, and page-load failures
|
|
366
|
+
- centralized AI provider detection so `tc --ai` and capture analysis recognize the same providers and env vars
|
|
367
|
+
- fixed missing DeepSeek guidance in the CLI help path
|
|
368
|
+
- changed legacy macOS browser setup to install Chromium only by default and avoid WebKit unsupported failures
|
|
369
|
+
|
|
370
|
+
### v0.2.6
|
|
371
|
+
|
|
372
|
+
- added an install-time banner with links to the website and community
|
|
373
|
+
- surfaced project links and web app status near the top of the README
|
|
374
|
+
- added a standalone `CONTRIBUTING.md`
|
|
375
|
+
- added a `CODE_OF_CONDUCT.md`
|
|
376
|
+
|
|
446
377
|
### v0.2.5
|
|
447
378
|
|
|
448
379
|
- replaced the legacy URL scraping path with full Playwright-based live page capture
|
|
@@ -462,7 +393,4 @@ templates/student-framework-ts/
|
|
|
462
393
|
|
|
463
394
|
## Contributing
|
|
464
395
|
|
|
465
|
-
|
|
466
|
-
2. Run `npm test`
|
|
467
|
-
3. Verify a manual `tc -> normalize -> gen -> test` flow if your change affects generation
|
|
468
|
-
4. Open a PR with the behavior change clearly described
|
|
396
|
+
Contribution guidelines live in [CONTRIBUTING.md](./CONTRIBUTING.md).
|