laxy-verify 1.1.32 → 1.2.0

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.
Files changed (38) hide show
  1. package/README.md +322 -322
  2. package/dist/audit/broken-links.d.ts +21 -21
  3. package/dist/audit/broken-links.js +86 -86
  4. package/dist/auth.d.ts +11 -6
  5. package/dist/auth.js +222 -188
  6. package/dist/cli.js +806 -724
  7. package/dist/comment.d.ts +21 -21
  8. package/dist/comment.js +134 -131
  9. package/dist/crawler.d.ts +36 -35
  10. package/dist/crawler.js +357 -356
  11. package/dist/e2e.d.ts +49 -49
  12. package/dist/e2e.js +565 -539
  13. package/dist/entitlement.d.ts +11 -11
  14. package/dist/entitlement.js +90 -88
  15. package/dist/init.js +87 -87
  16. package/dist/multi-viewport.d.ts +31 -31
  17. package/dist/multi-viewport.js +298 -298
  18. package/dist/playwright-runner.d.ts +16 -16
  19. package/dist/playwright-runner.js +208 -208
  20. package/dist/report-markdown.d.ts +39 -39
  21. package/dist/report-markdown.js +386 -386
  22. package/dist/security-audit.d.ts +9 -9
  23. package/dist/security-audit.js +64 -64
  24. package/dist/serve.d.ts +13 -13
  25. package/dist/serve.js +249 -246
  26. package/dist/trend.d.ts +50 -49
  27. package/dist/trend.js +148 -147
  28. package/dist/verification-core/index.d.ts +3 -3
  29. package/dist/verification-core/index.js +19 -19
  30. package/dist/verification-core/report.d.ts +14 -14
  31. package/dist/verification-core/report.js +409 -404
  32. package/dist/verification-core/tier-policy.d.ts +13 -13
  33. package/dist/verification-core/tier-policy.js +60 -60
  34. package/dist/verification-core/types.d.ts +108 -108
  35. package/dist/verification-core/types.js +2 -2
  36. package/dist/visual-diff.d.ts +26 -26
  37. package/dist/visual-diff.js +178 -178
  38. package/package.json +67 -67
package/README.md CHANGED
@@ -1,322 +1,322 @@
1
- # laxy-verify
2
-
3
- `laxy-verify` is a deployment blocker gate for frontend apps.
4
-
5
- Every verification run includes the same build, Lighthouse, E2E, multi-viewport, security, visual diff, and stability coverage regardless of plan.
6
-
7
- ## Quick start
8
-
9
- Run it on a frontend app:
10
-
11
- ```bash
12
- cd your-project
13
- npx laxy-verify .
14
- ```
15
-
16
- Generate config plus GitHub Actions workflow:
17
-
18
- ```bash
19
- npx laxy-verify --init
20
- ```
21
-
22
- That creates:
23
-
24
- - `.laxy.yml`
25
- - `.github/workflows/laxy-verify.yml`
26
-
27
- Optional: log in to connect the CLI to your Laxy account:
28
-
29
- ```bash
30
- npx laxy-verify login
31
- npx laxy-verify whoami
32
- ```
33
-
34
- For CI, set `LAXY_TOKEN` instead of interactive login:
35
-
36
- ```yaml
37
- env:
38
- LAXY_TOKEN: ${{ secrets.LAXY_TOKEN }}
39
- ```
40
-
41
- ## Why laxy-verify?
42
-
43
- Most teams already have some mix of:
44
-
45
- - `npm run build`
46
- - Lighthouse
47
- - Playwright or smoke checks
48
- - CI status rules
49
-
50
- The gap is not "can these tools exist together?" The gap is "who turns that pile of output into a safe merge or release decision?"
51
-
52
- `laxy-verify` gives you:
53
-
54
- - one command instead of a custom build plus audit plus smoke-check script stack
55
- - one result file instead of scattered logs
56
- - one blocker-first decision instead of "build passed, but do we actually trust this release?"
57
- - optional account-linked automation on top of the same verification run
58
-
59
- This is most useful if you ship frontend apps and want a practical gate before:
60
-
61
- - merge
62
- - client review
63
- - QA handoff
64
- - production release
65
-
66
- ## vs other tools
67
-
68
- No single competitor covers this combination. Here is where each tool stops:
69
-
70
- | | laxy-verify | LHCI | Checkly | Percy / Argos | Unlighthouse | QA Wolf |
71
- |--|--|--|--|--|--|--|
72
- | Build failure detection | yes | no | no | no | no | no |
73
- | Auto-generated E2E | yes | no | write your own | no | no | yes |
74
- | Security audit | yes | no | no | no | no | no |
75
- | Lighthouse (multi-run avg) | yes | yes | no | no | yes | no |
76
- | Visual diff | yes | no | no | yes | no | no |
77
- | Multi-viewport checks | yes | no | separate config | no | yes | no |
78
- | Ship/hold release decision | yes | score only | no | no | no | no |
79
- | Zero config to start | yes | no | no | no | partial | no |
80
- | Free full coverage | yes | yes | limited | limited | yes | enterprise |
81
-
82
- LHCI gives you Lighthouse. Percy gives you visual diffs. Checkly watches your production uptime. None of them produce a merge or release decision from one command.
83
-
84
- ## The failures it is meant to catch
85
-
86
- Use `laxy-verify` when you want to catch things like:
87
-
88
- - the production build passes locally but fails in CI
89
- - the app opens, but a key button or form flow is broken
90
- - desktop looks fine, but a mobile CTA is pushed out of view
91
- - Lighthouse looks acceptable, but the user-visible path is still not safe to ship
92
- - a PR needs a clear hold reason instead of a vague "something failed"
93
-
94
- ## What it actually checks
95
-
96
- A standard run includes:
97
-
98
- - production build success
99
- - Lighthouse thresholds (3 runs for stable evidence)
100
- - E2E scenarios for user-visible flows
101
- - multi-viewport checks (desktop, tablet, mobile)
102
- - blocker-aware reporting and release decisions
103
-
104
- Every run includes:
105
-
106
- - security audit
107
- - visual diff evidence
108
- - stability pass (second E2E run)
109
-
110
- ## What you get from one run
111
-
112
- - a release decision such as `quick-pass`, `client-ready`, `release-ready`, `hold`, or `investigate`
113
- - a verification grade: `Gold`, `Silver`, `Bronze`, or `Unverified`
114
- - `.laxy-result.json` for CI and automation
115
- - `laxy-verify-report.md` for human review and AI handoff
116
-
117
- Grades still exist, but they are not the main point. The main point is whether the run found blockers you should stop on.
118
-
119
- ## Quick start
120
-
121
- Run it on a frontend app:
122
-
123
- ```bash
124
- cd your-project
125
- npx laxy-verify .
126
- ```
127
-
128
- Generate config plus CI workflow:
129
-
130
- ```bash
131
- npx laxy-verify --init
132
- ```
133
-
134
- That creates:
135
-
136
- - `.laxy.yml`
137
- - `.github/workflows/laxy-verify.yml`
138
-
139
- Optional: log in to connect the CLI to your Laxy account:
140
-
141
- ```bash
142
- npx laxy-verify login
143
- npx laxy-verify whoami
144
- ```
145
-
146
- For CI, set `LAXY_TOKEN` instead of interactive login:
147
-
148
- ```yaml
149
- env:
150
- LAXY_TOKEN: ${{ secrets.LAXY_TOKEN }}
151
- ```
152
-
153
- ## Example workflow
154
-
155
- 1. Run `npx laxy-verify .` locally before opening or merging a PR.
156
- 2. Fix broken builds, broken flows, and visible regressions.
157
- 3. Commit `.laxy.yml`.
158
- 4. Run `npx laxy-verify --init`.
159
- 5. Let the GitHub Action apply the same gate on every PR.
160
-
161
- ## Example output
162
-
163
- ```text
164
- Decision: client-ready
165
- Grade: Gold
166
-
167
- Passed:
168
- - production build
169
- - Lighthouse thresholds
170
- - core user flows
171
- - desktop, tablet, and mobile viewport checks
172
-
173
- Artifacts:
174
- - .laxy-result.json
175
- - laxy-verify-report.md
176
- ```
177
-
178
- ## The decision it helps you make
179
-
180
- `laxy-verify` answers a delivery decision, not just a score:
181
-
182
- - Would this break for real users right now?
183
- - What would block a client demo or QA handoff?
184
- - Is there enough evidence to merge or release with confidence?
185
-
186
- All verification checks already run without a paid plan gate.
187
-
188
- ## Grades
189
-
190
- | Grade | Meaning |
191
- |---|---|
192
- | Gold | Build passed, E2E passed, Lighthouse passed, and release-level evidence passed |
193
- | Silver | Build passed and E2E passed |
194
- | Bronze | Build passed |
195
- | Unverified | Build failed |
196
-
197
- Default Lighthouse thresholds:
198
-
199
- - Performance `>= 70`
200
- - Accessibility `>= 85`
201
- - SEO `>= 80`
202
- - Best Practices `>= 80`
203
-
204
- ## Config
205
-
206
- All fields in `.laxy.yml` are optional.
207
-
208
- ```yaml
209
- framework: auto
210
- build_command: ""
211
- dev_command: ""
212
- package_manager: auto
213
- port: 3000
214
- build_timeout: 300
215
- dev_timeout: 60
216
- lighthouse_runs: 1
217
- fail_on: bronze
218
-
219
- thresholds:
220
- performance: 70
221
- accessibility: 85
222
- seo: 80
223
- best_practices: 80
224
-
225
- crawl: false
226
- max_crawl_depth: 3
227
- max_crawl_pages: 10
228
- browsers:
229
- - chromium
230
- ```
231
-
232
- Useful adjustments:
233
-
234
- - raise `fail_on` in CI when you want stricter gates
235
- - set `build_command` or `dev_command` if auto-detection is not enough
236
- - increase `lighthouse_runs` for more stable performance evidence
237
- - point the CLI at the actual app directory in a monorepo
238
-
239
- ## CLI
240
-
241
- ```text
242
- npx laxy-verify [project-dir]
243
-
244
- Options:
245
- --format console|json
246
- --ci
247
- --config <path>
248
- --fail-on unverified|bronze|silver|gold
249
- --skip-lighthouse
250
- --plan-override free|pro|team
251
- --badge
252
- --init
253
- --multi-viewport
254
- --help
255
-
256
- Subcommands:
257
- login [email]
258
- logout
259
- whoami
260
- ```
261
-
262
- `--plan-override` is only for plan-label and automation testing. Verification coverage stays the same on every plan.
263
-
264
- ## Result files
265
-
266
- Every run writes `.laxy-result.json`.
267
-
268
- When the run finds something worth reviewing, it also writes `laxy-verify-report.md`.
269
-
270
- Typical use:
271
-
272
- - `.laxy-result.json` for CI parsing and machine decisions
273
- - `laxy-verify-report.md` for human review, PR discussion, or AI-assisted fixes
274
-
275
- The markdown report is designed to be readable and easy to paste into coding tools.
276
-
277
- It includes:
278
-
279
- - the main stop-or-ship decision in plain English
280
- - what passed
281
- - blockers and warnings
282
- - exact verification evidence
283
- - failed scenarios
284
- - a `Copy For AI` section
285
-
286
- ## What this is good at
287
-
288
- Use `laxy-verify` when you want:
289
-
290
- - a merge or release gate for frontend apps
291
- - one repeatable command for build plus audit plus visible-flow verification
292
- - a decision that non-authors can understand
293
- - JSON output for automation without building your own wrapper
294
-
295
- ## What this is not
296
-
297
- `laxy-verify` is not trying to replace:
298
-
299
- - your full Playwright suite
300
- - deep visual QA by designers
301
- - production observability
302
- - manual exploratory testing
303
-
304
- It is a pre-merge and pre-release verification layer, not your entire quality system.
305
-
306
- ## Limitations
307
-
308
- - monorepos should target the real app subdirectory
309
- - dev-server-based Lighthouse is not identical to production hosting
310
- - visual diff and viewport checks increase runtime
311
- - best stability is on current LTS Node releases
312
-
313
- ## Requirements
314
-
315
- - Node `>=20.18.0 <25`
316
- - a frontend app with a runnable build flow
317
- - optional: `playwright` if your project already uses it
318
-
319
- ## Links
320
-
321
- - GitHub: https://github.com/SUNgm24/Laxy/tree/main/laxy-verify
322
- - Issues: https://github.com/SUNgm24/Laxy/issues
1
+ # laxy-verify
2
+
3
+ `laxy-verify` is a deployment blocker gate for frontend apps.
4
+
5
+ Every verification run includes the same build, Lighthouse, E2E, multi-viewport, security, visual diff, and stability coverage regardless of plan.
6
+
7
+ ## Quick start
8
+
9
+ Run it on a frontend app:
10
+
11
+ ```bash
12
+ cd your-project
13
+ npx laxy-verify .
14
+ ```
15
+
16
+ Generate config plus GitHub Actions workflow:
17
+
18
+ ```bash
19
+ npx laxy-verify --init
20
+ ```
21
+
22
+ That creates:
23
+
24
+ - `.laxy.yml`
25
+ - `.github/workflows/laxy-verify.yml`
26
+
27
+ Optional: log in to connect the CLI to your Laxy account:
28
+
29
+ ```bash
30
+ npx laxy-verify login
31
+ npx laxy-verify whoami
32
+ ```
33
+
34
+ For CI, set `LAXY_TOKEN` instead of interactive login:
35
+
36
+ ```yaml
37
+ env:
38
+ LAXY_TOKEN: ${{ secrets.LAXY_TOKEN }}
39
+ ```
40
+
41
+ ## Why laxy-verify?
42
+
43
+ Most teams already have some mix of:
44
+
45
+ - `npm run build`
46
+ - Lighthouse
47
+ - Playwright or smoke checks
48
+ - CI status rules
49
+
50
+ The gap is not "can these tools exist together?" The gap is "who turns that pile of output into a safe merge or release decision?"
51
+
52
+ `laxy-verify` gives you:
53
+
54
+ - one command instead of a custom build plus audit plus smoke-check script stack
55
+ - one result file instead of scattered logs
56
+ - one blocker-first decision instead of "build passed, but do we actually trust this release?"
57
+ - optional account-linked automation on top of the same verification run
58
+
59
+ This is most useful if you ship frontend apps and want a practical gate before:
60
+
61
+ - merge
62
+ - client review
63
+ - QA handoff
64
+ - production release
65
+
66
+ ## vs other tools
67
+
68
+ No single competitor covers this combination. Here is where each tool stops:
69
+
70
+ | | laxy-verify | LHCI | Checkly | Percy / Argos | Unlighthouse | QA Wolf |
71
+ |--|--|--|--|--|--|--|
72
+ | Build failure detection | yes | no | no | no | no | no |
73
+ | Auto-generated E2E | yes | no | write your own | no | no | yes |
74
+ | Security audit | yes | no | no | no | no | no |
75
+ | Lighthouse (multi-run avg) | yes | yes | no | no | yes | no |
76
+ | Visual diff | yes | no | no | yes | no | no |
77
+ | Multi-viewport checks | yes | no | separate config | no | yes | no |
78
+ | Ship/hold release decision | yes | score only | no | no | no | no |
79
+ | Zero config to start | yes | no | no | no | partial | no |
80
+ | Free full coverage | yes | yes | limited | limited | yes | enterprise |
81
+
82
+ LHCI gives you Lighthouse. Percy gives you visual diffs. Checkly watches your production uptime. None of them produce a merge or release decision from one command.
83
+
84
+ ## The failures it is meant to catch
85
+
86
+ Use `laxy-verify` when you want to catch things like:
87
+
88
+ - the production build passes locally but fails in CI
89
+ - the app opens, but a key button or form flow is broken
90
+ - desktop looks fine, but a mobile CTA is pushed out of view
91
+ - Lighthouse looks acceptable, but the user-visible path is still not safe to ship
92
+ - a PR needs a clear hold reason instead of a vague "something failed"
93
+
94
+ ## What it actually checks
95
+
96
+ A standard run includes:
97
+
98
+ - production build success
99
+ - Lighthouse thresholds (3 runs for stable evidence)
100
+ - E2E scenarios for user-visible flows
101
+ - multi-viewport checks (desktop, tablet, mobile)
102
+ - blocker-aware reporting and release decisions
103
+
104
+ Every run includes:
105
+
106
+ - security audit
107
+ - visual diff evidence
108
+ - stability pass (second E2E run)
109
+
110
+ ## What you get from one run
111
+
112
+ - a release decision such as `quick-pass`, `client-ready`, `release-ready`, `hold`, or `investigate`
113
+ - a verification grade: `Gold`, `Silver`, `Bronze`, or `Unverified`
114
+ - `.laxy-result.json` for CI and automation
115
+ - `laxy-verify-report.md` for human review and AI handoff
116
+
117
+ Grades still exist, but they are not the main point. The main point is whether the run found blockers you should stop on.
118
+
119
+ ## Quick start
120
+
121
+ Run it on a frontend app:
122
+
123
+ ```bash
124
+ cd your-project
125
+ npx laxy-verify .
126
+ ```
127
+
128
+ Generate config plus CI workflow:
129
+
130
+ ```bash
131
+ npx laxy-verify --init
132
+ ```
133
+
134
+ That creates:
135
+
136
+ - `.laxy.yml`
137
+ - `.github/workflows/laxy-verify.yml`
138
+
139
+ Optional: log in to connect the CLI to your Laxy account:
140
+
141
+ ```bash
142
+ npx laxy-verify login
143
+ npx laxy-verify whoami
144
+ ```
145
+
146
+ For CI, set `LAXY_TOKEN` instead of interactive login:
147
+
148
+ ```yaml
149
+ env:
150
+ LAXY_TOKEN: ${{ secrets.LAXY_TOKEN }}
151
+ ```
152
+
153
+ ## Example workflow
154
+
155
+ 1. Run `npx laxy-verify .` locally before opening or merging a PR.
156
+ 2. Fix broken builds, broken flows, and visible regressions.
157
+ 3. Commit `.laxy.yml`.
158
+ 4. Run `npx laxy-verify --init`.
159
+ 5. Let the GitHub Action apply the same gate on every PR.
160
+
161
+ ## Example output
162
+
163
+ ```text
164
+ Decision: client-ready
165
+ Grade: Gold
166
+
167
+ Passed:
168
+ - production build
169
+ - Lighthouse thresholds
170
+ - core user flows
171
+ - desktop, tablet, and mobile viewport checks
172
+
173
+ Artifacts:
174
+ - .laxy-result.json
175
+ - laxy-verify-report.md
176
+ ```
177
+
178
+ ## The decision it helps you make
179
+
180
+ `laxy-verify` answers a delivery decision, not just a score:
181
+
182
+ - Would this break for real users right now?
183
+ - What would block a client demo or QA handoff?
184
+ - Is there enough evidence to merge or release with confidence?
185
+
186
+ All verification checks already run without a paid plan gate.
187
+
188
+ ## Grades
189
+
190
+ | Grade | Meaning |
191
+ |---|---|
192
+ | Gold | Build passed, E2E passed, Lighthouse passed, and release-level evidence passed |
193
+ | Silver | Build passed and E2E passed |
194
+ | Bronze | Build passed |
195
+ | Unverified | Build failed |
196
+
197
+ Default Lighthouse thresholds:
198
+
199
+ - Performance `>= 70`
200
+ - Accessibility `>= 85`
201
+ - SEO `>= 80`
202
+ - Best Practices `>= 80`
203
+
204
+ ## Config
205
+
206
+ All fields in `.laxy.yml` are optional.
207
+
208
+ ```yaml
209
+ framework: auto
210
+ build_command: ""
211
+ dev_command: ""
212
+ package_manager: auto
213
+ port: 3000
214
+ build_timeout: 300
215
+ dev_timeout: 60
216
+ lighthouse_runs: 1
217
+ fail_on: bronze
218
+
219
+ thresholds:
220
+ performance: 70
221
+ accessibility: 85
222
+ seo: 80
223
+ best_practices: 80
224
+
225
+ crawl: false
226
+ max_crawl_depth: 3
227
+ max_crawl_pages: 10
228
+ browsers:
229
+ - chromium
230
+ ```
231
+
232
+ Useful adjustments:
233
+
234
+ - raise `fail_on` in CI when you want stricter gates
235
+ - set `build_command` or `dev_command` if auto-detection is not enough
236
+ - increase `lighthouse_runs` for more stable performance evidence
237
+ - point the CLI at the actual app directory in a monorepo
238
+
239
+ ## CLI
240
+
241
+ ```text
242
+ npx laxy-verify [project-dir]
243
+
244
+ Options:
245
+ --format console|json
246
+ --ci
247
+ --config <path>
248
+ --fail-on unverified|bronze|silver|gold
249
+ --skip-lighthouse
250
+ --plan-override free|pro|team
251
+ --badge
252
+ --init
253
+ --multi-viewport
254
+ --help
255
+
256
+ Subcommands:
257
+ login [email]
258
+ logout
259
+ whoami
260
+ ```
261
+
262
+ `--plan-override` is only for plan-label and automation testing. Verification coverage stays the same on every plan.
263
+
264
+ ## Result files
265
+
266
+ Every run writes `.laxy-result.json`.
267
+
268
+ When the run finds something worth reviewing, it also writes `laxy-verify-report.md`.
269
+
270
+ Typical use:
271
+
272
+ - `.laxy-result.json` for CI parsing and machine decisions
273
+ - `laxy-verify-report.md` for human review, PR discussion, or AI-assisted fixes
274
+
275
+ The markdown report is designed to be readable and easy to paste into coding tools.
276
+
277
+ It includes:
278
+
279
+ - the main stop-or-ship decision in plain English
280
+ - what passed
281
+ - blockers and warnings
282
+ - exact verification evidence
283
+ - failed scenarios
284
+ - a `Copy For AI` section
285
+
286
+ ## What this is good at
287
+
288
+ Use `laxy-verify` when you want:
289
+
290
+ - a merge or release gate for frontend apps
291
+ - one repeatable command for build plus audit plus visible-flow verification
292
+ - a decision that non-authors can understand
293
+ - JSON output for automation without building your own wrapper
294
+
295
+ ## What this is not
296
+
297
+ `laxy-verify` is not trying to replace:
298
+
299
+ - your full Playwright suite
300
+ - deep visual QA by designers
301
+ - production observability
302
+ - manual exploratory testing
303
+
304
+ It is a pre-merge and pre-release verification layer, not your entire quality system.
305
+
306
+ ## Limitations
307
+
308
+ - monorepos should target the real app subdirectory
309
+ - dev-server-based Lighthouse is not identical to production hosting
310
+ - visual diff and viewport checks increase runtime
311
+ - best stability is on current LTS Node releases
312
+
313
+ ## Requirements
314
+
315
+ - Node `>=20.18.0 <25`
316
+ - a frontend app with a runnable build flow
317
+ - optional: `playwright` if your project already uses it
318
+
319
+ ## Links
320
+
321
+ - GitHub: https://github.com/SUNgm24/Laxy/tree/main/laxy-verify
322
+ - Issues: https://github.com/SUNgm24/Laxy/issues
@@ -1,21 +1,21 @@
1
- /**
2
- * Broken-links audit.
3
- * Uses the crawl result to find all internal links, then validates each
4
- * with an HTTP HEAD/GET request. Links that return 4xx/5xx or timeout are
5
- * reported as blockers.
6
- */
7
- import { type CrawlResult } from "../crawler.js";
8
- export interface BrokenLink {
9
- url: string;
10
- path: string;
11
- status: number;
12
- statusText: string;
13
- severity: "critical" | "high";
14
- }
15
- export interface BrokenLinksResult {
16
- brokenLinks: BrokenLink[];
17
- checkedCount: number;
18
- hasBrokenLinks: boolean;
19
- summary: string;
20
- }
21
- export declare function auditBrokenLinks(crawlResult: CrawlResult, baseUrl: string, abortSignal?: AbortSignal): Promise<BrokenLinksResult>;
1
+ /**
2
+ * Broken-links audit.
3
+ * Uses the crawl result to find all internal links, then validates each
4
+ * with an HTTP HEAD/GET request. Links that return 4xx/5xx or timeout are
5
+ * reported as blockers.
6
+ */
7
+ import { type CrawlResult } from "../crawler.js";
8
+ export interface BrokenLink {
9
+ url: string;
10
+ path: string;
11
+ status: number;
12
+ statusText: string;
13
+ severity: "critical" | "high";
14
+ }
15
+ export interface BrokenLinksResult {
16
+ brokenLinks: BrokenLink[];
17
+ checkedCount: number;
18
+ hasBrokenLinks: boolean;
19
+ summary: string;
20
+ }
21
+ export declare function auditBrokenLinks(crawlResult: CrawlResult, baseUrl: string, abortSignal?: AbortSignal): Promise<BrokenLinksResult>;