@crvouga/atlas 0.3.0 → 0.5.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.
- package/CHANGELOG.md +12 -0
- package/README.md +178 -604
- package/dist/bun/src/driver.d.ts +41 -7
- package/dist/bun/src/driver.js +47 -6
- package/dist/bun/src/index.d.ts +8 -0
- package/dist/bun/src/index.js +8 -0
- package/dist/core/src/cli.d.ts +14 -1
- package/dist/core/src/cli.js +30 -1
- package/dist/core/src/config.d.ts +70 -4
- package/dist/core/src/config.js +62 -3
- package/dist/core/src/events/cloudevents.d.ts +54 -9
- package/dist/core/src/events/cloudevents.js +60 -9
- package/dist/core/src/graph.d.ts +21 -0
- package/dist/core/src/graph.js +26 -0
- package/dist/core/src/index.d.ts +11 -0
- package/dist/core/src/index.js +11 -0
- package/dist/core/src/lint.d.ts +30 -0
- package/dist/core/src/lint.js +13 -0
- package/dist/core/src/plan.d.ts +39 -1
- package/dist/core/src/plan.js +28 -1
- package/dist/core/src/privacy.d.ts +29 -2
- package/dist/core/src/privacy.js +19 -2
- package/dist/core/src/report/formats.d.ts +34 -4
- package/dist/core/src/report/formats.js +24 -4
- package/dist/core/src/report/markdown.d.ts +15 -0
- package/dist/core/src/report/markdown.js +8 -0
- package/dist/core/src/run/clients.d.ts +44 -5
- package/dist/core/src/run/clients.js +46 -2
- package/dist/core/src/run/execute.d.ts +69 -16
- package/dist/core/src/run/execute.js +67 -16
- package/dist/core/src/run/frames.d.ts +13 -4
- package/dist/core/src/run/frames.js +19 -4
- package/dist/core/src/run/http.d.ts +34 -1
- package/dist/core/src/run/http.js +14 -1
- package/dist/core/src/run/types.d.ts +76 -3
- package/dist/core/src/run/types.js +19 -3
- package/dist/core/src/signals.d.ts +49 -5
- package/dist/core/src/signals.js +22 -5
- package/dist/core/src/spec/compose.d.ts +23 -1
- package/dist/core/src/spec/compose.js +10 -1
- package/dist/core/src/spec/index.d.ts +9 -1
- package/dist/core/src/spec/index.js +9 -1
- package/dist/core/src/spec/load.d.ts +22 -1
- package/dist/core/src/spec/load.js +31 -1
- package/dist/core/src/spec/parse.d.ts +16 -2
- package/dist/core/src/spec/parse.js +25 -2
- package/dist/core/src/spec/scxml.d.ts +25 -4
- package/dist/core/src/spec/scxml.js +36 -4
- package/dist/core/src/spec/types.d.ts +52 -1
- package/dist/core/src/spec/types.js +24 -0
- package/dist/detox/src/index.d.ts +54 -11
- package/dist/detox/src/index.js +45 -7
- package/dist/playwright/src/driver.d.ts +39 -3
- package/dist/playwright/src/driver.js +27 -3
- package/dist/playwright/src/index.d.ts +10 -0
- package/dist/playwright/src/index.js +10 -0
- package/dist/playwright/src/media.d.ts +50 -4
- package/dist/playwright/src/media.js +55 -4
- package/dist/playwright/src/signals.d.ts +44 -5
- package/dist/playwright/src/signals.js +29 -5
- package/dist/reports/src/attachment-files.d.ts +44 -0
- package/dist/reports/src/attachment-files.js +121 -0
- package/dist/reports/src/attachment-response.d.ts +31 -0
- package/dist/reports/src/attachment-response.js +55 -0
- package/dist/reports/src/aws-credentials.d.ts +48 -0
- package/dist/reports/src/aws-credentials.js +221 -0
- package/dist/reports/src/browser-navigation.d.ts +14 -0
- package/dist/reports/src/browser-navigation.js +7 -0
- package/dist/reports/src/bundle.d.ts +34 -2
- package/dist/reports/src/bundle.js +38 -2
- package/dist/reports/src/catalog.d.ts +34 -3
- package/dist/reports/src/catalog.js +17 -3
- package/dist/reports/src/cli-stores.d.ts +36 -0
- package/dist/reports/src/cli-stores.js +73 -0
- package/dist/reports/src/clock.d.ts +7 -2
- package/dist/reports/src/clock.js +5 -2
- package/dist/reports/src/completion-order.d.ts +18 -5
- package/dist/reports/src/completion-order.js +18 -5
- package/dist/reports/src/compose.d.ts +80 -0
- package/dist/reports/src/compose.js +117 -0
- package/dist/reports/src/copy-store.d.ts +29 -0
- package/dist/reports/src/copy-store.js +52 -0
- package/dist/reports/src/directory-outline.d.ts +38 -0
- package/dist/reports/src/directory-outline.js +103 -0
- package/dist/reports/src/directory-store.d.ts +20 -0
- package/dist/reports/src/directory-store.js +166 -0
- package/dist/reports/src/doctor.d.ts +29 -0
- package/dist/reports/src/doctor.js +83 -0
- package/dist/reports/src/effective-delta.d.ts +34 -0
- package/dist/reports/src/effective-delta.js +25 -0
- package/dist/reports/src/evidence-detail.d.ts +64 -0
- package/dist/reports/src/evidence-detail.js +92 -0
- package/dist/reports/src/evidence-live.d.ts +40 -4
- package/dist/reports/src/evidence-live.js +52 -4
- package/dist/reports/src/evidence-types.d.ts +70 -1
- package/dist/reports/src/evidence-types.js +5 -1
- package/dist/reports/src/evidence-view.d.ts +58 -6
- package/dist/reports/src/evidence-view.js +44 -5
- package/dist/reports/src/explorer-types.d.ts +40 -3
- package/dist/reports/src/explorer-types.js +8 -0
- package/dist/reports/src/explorer-versions.d.ts +9 -1
- package/dist/reports/src/explorer-versions.js +18 -1
- package/dist/reports/src/export-evidence.d.ts +16 -1
- package/dist/reports/src/export-evidence.js +52 -1
- package/dist/reports/src/fetcher.d.ts +27 -3
- package/dist/reports/src/fetcher.js +11 -3
- package/dist/reports/src/format-date.d.ts +6 -0
- package/dist/reports/src/format-date.js +6 -0
- package/dist/reports/src/format.d.ts +16 -0
- package/dist/reports/src/format.js +10 -0
- package/dist/reports/src/frames.d.ts +36 -3
- package/dist/reports/src/frames.js +22 -3
- package/dist/reports/src/hash.d.ts +18 -0
- package/dist/reports/src/hash.js +13 -0
- package/dist/reports/src/host.d.ts +29 -0
- package/dist/reports/src/host.js +64 -0
- package/dist/reports/src/html-frame.d.ts +5 -6
- package/dist/reports/src/html-frame.js +12 -1
- package/dist/reports/src/http-store.d.ts +52 -0
- package/dist/reports/src/http-store.js +145 -0
- package/dist/reports/src/http.d.ts +7 -0
- package/dist/reports/src/http.js +6 -0
- package/dist/reports/src/ingest.d.ts +54 -0
- package/dist/reports/src/ingest.js +210 -0
- package/dist/reports/src/init.d.ts +40 -0
- package/dist/reports/src/init.js +364 -0
- package/dist/reports/src/junit.d.ts +33 -6
- package/dist/reports/src/junit.js +87 -21
- package/dist/reports/src/keyboard.d.ts +20 -0
- package/dist/reports/src/keyboard.js +11 -0
- package/dist/reports/src/keys.d.ts +21 -3
- package/dist/reports/src/keys.js +21 -3
- package/dist/reports/src/layer-axes.d.ts +48 -0
- package/dist/reports/src/layer-axes.js +71 -0
- package/dist/reports/src/layer-catalog.d.ts +28 -1
- package/dist/reports/src/layer-catalog.js +19 -2
- package/dist/reports/src/layer-merge.d.ts +98 -9
- package/dist/reports/src/layer-merge.js +154 -33
- package/dist/reports/src/layer-source.d.ts +18 -0
- package/dist/reports/src/layer-source.js +14 -0
- package/dist/reports/src/layer-store.d.ts +42 -0
- package/dist/reports/src/layer-store.js +63 -5
- package/dist/reports/src/layer-types.d.ts +34 -1
- package/dist/reports/src/layers-route.d.ts +47 -4
- package/dist/reports/src/layers-route.js +88 -12
- package/dist/reports/src/media-types.d.ts +11 -0
- package/dist/reports/src/media-types.js +22 -0
- package/dist/reports/src/namespace-guard.d.ts +10 -1
- package/dist/reports/src/namespace-guard.js +10 -1
- package/dist/reports/src/navigation.d.ts +12 -0
- package/dist/reports/src/navigation.js +7 -0
- package/dist/reports/src/object-io.d.ts +11 -4
- package/dist/reports/src/object-io.js +4 -4
- package/dist/reports/src/object-store-conformance.d.ts +27 -0
- package/dist/reports/src/object-store-conformance.js +87 -0
- package/dist/reports/src/object-store.d.ts +33 -24
- package/dist/reports/src/object-store.js +17 -24
- package/dist/reports/src/parse-with.d.ts +16 -0
- package/dist/reports/src/parse-with.js +14 -0
- package/dist/reports/src/performance-part.d.ts +25 -1
- package/dist/reports/src/performance-part.js +15 -1
- package/dist/reports/src/performance.d.ts +22 -2
- package/dist/reports/src/performance.js +12 -2
- package/dist/reports/src/persist.d.ts +12 -3
- package/dist/reports/src/persist.js +12 -3
- package/dist/reports/src/phone.d.ts +18 -1
- package/dist/reports/src/phone.js +18 -1
- package/dist/reports/src/protocol.d.ts +30 -4
- package/dist/reports/src/protocol.js +15 -4
- package/dist/reports/src/publication.d.ts +21 -1
- package/dist/reports/src/publication.js +21 -1
- package/dist/reports/src/publish-checks.d.ts +35 -0
- package/dist/reports/src/publish-checks.js +122 -0
- package/dist/reports/src/publish.d.ts +44 -9
- package/dist/reports/src/publish.js +40 -7
- package/dist/reports/src/read.d.ts +46 -16
- package/dist/reports/src/read.js +38 -14
- package/dist/reports/src/recording-bundle.d.ts +13 -2
- package/dist/reports/src/recording-bundle.js +4 -2
- package/dist/reports/src/recording-keys.d.ts +15 -1
- package/dist/reports/src/recording-keys.js +15 -1
- package/dist/reports/src/remote-report.d.ts +28 -7
- package/dist/reports/src/remote-report.js +15 -7
- package/dist/reports/src/report-cli.d.ts +51 -0
- package/dist/reports/src/report-cli.js +485 -0
- package/dist/reports/src/report-index.d.ts +99 -0
- package/dist/reports/src/report-index.js +337 -0
- package/dist/reports/src/report-loader.d.ts +10 -0
- package/dist/reports/src/report-loader.js +6 -0
- package/dist/reports/src/report-parts.d.ts +29 -3
- package/dist/reports/src/report-parts.js +40 -3
- package/dist/reports/src/report-status.d.ts +48 -0
- package/dist/reports/src/report-status.js +156 -0
- package/dist/reports/src/report-types.d.ts +73 -0
- package/dist/reports/src/report-types.js +3 -0
- package/dist/reports/src/reporter.d.ts +67 -0
- package/dist/reports/src/reporter.js +128 -0
- package/dist/reports/src/reports-explorer-route.d.ts +541 -0
- package/dist/reports/src/reports-explorer-route.js +11 -0
- package/dist/reports/src/reports-list-route.d.ts +9 -0
- package/dist/reports/src/reports-list-route.js +9 -0
- package/dist/reports/src/reports-route.d.ts +561 -22
- package/dist/reports/src/reports-route.js +11 -3
- package/dist/reports/src/reports-store.d.ts +19 -2
- package/dist/reports/src/reports-store.js +10 -2
- package/dist/reports/src/resilient-cache.d.ts +14 -1
- package/dist/reports/src/resilient-cache.js +8 -1
- package/dist/reports/src/retention.d.ts +17 -1
- package/dist/reports/src/retention.js +5 -1
- package/dist/reports/src/run-bundle.d.ts +63 -0
- package/dist/reports/src/run-bundle.js +159 -0
- package/dist/reports/src/s3-store.d.ts +79 -0
- package/dist/reports/src/s3-store.js +295 -0
- package/dist/reports/src/scenario.d.ts +14 -4
- package/dist/reports/src/scenario.js +5 -4
- package/dist/reports/src/sigv4.d.ts +72 -0
- package/dist/reports/src/sigv4.js +96 -0
- package/dist/reports/src/snapshot-bundle.d.ts +24 -1
- package/dist/reports/src/snapshot-bundle.js +27 -2
- package/dist/reports/src/snapshot-surface.d.ts +20 -9
- package/dist/reports/src/snapshot-surface.js +32 -19
- package/dist/reports/src/source-content.d.ts +23 -0
- package/dist/reports/src/source-content.js +30 -1
- package/dist/reports/src/source-entries.d.ts +13 -0
- package/dist/reports/src/source-entries.js +6 -0
- package/dist/reports/src/source-part.d.ts +15 -0
- package/dist/reports/src/source-part.js +8 -0
- package/dist/reports/src/source-reader.d.ts +11 -0
- package/dist/reports/src/source-reader.js +5 -0
- package/dist/reports/src/spec-evidence.d.ts +12 -2
- package/dist/reports/src/spec-evidence.js +6 -2
- package/dist/reports/src/spec-inventory.d.ts +15 -1
- package/dist/reports/src/spec-inventory.js +22 -1
- package/dist/reports/src/spec-link.d.ts +28 -0
- package/dist/reports/src/spec-link.js +70 -0
- package/dist/reports/src/spec-set.d.ts +63 -0
- package/dist/reports/src/spec-set.js +177 -0
- package/dist/reports/src/status.d.ts +10 -0
- package/dist/reports/src/status.js +5 -0
- package/dist/reports/src/store-prefix.d.ts +28 -0
- package/dist/reports/src/store-prefix.js +22 -0
- package/dist/reports/src/store-url.d.ts +89 -0
- package/dist/reports/src/store-url.js +160 -0
- package/dist/reports/src/test-catalog-entity.d.ts +11 -0
- package/dist/reports/src/test-catalog-entity.js +6 -0
- package/dist/reports/src/types.d.ts +6 -1
- package/dist/reports/src/use-report-nav.d.ts +35 -0
- package/dist/reports/src/use-report-nav.js +12 -0
- package/dist/schema/src/api.d.ts +799 -0
- package/dist/schema/src/api.js +201 -0
- package/dist/schema/src/cli-results.d.ts +210 -0
- package/dist/schema/src/cli-results.js +124 -0
- package/dist/schema/src/common.d.ts +53 -0
- package/dist/schema/src/common.js +42 -0
- package/dist/schema/src/index.d.ts +14 -0
- package/dist/schema/src/index.js +14 -0
- package/dist/schema/src/layer.d.ts +2273 -0
- package/dist/schema/src/layer.js +462 -0
- package/dist/schema/src/manifest.d.ts +95 -0
- package/dist/schema/src/manifest.js +84 -0
- package/dist/schema/src/report-sources.d.ts +28 -0
- package/dist/schema/src/report-sources.js +25 -0
- package/dist/schema/src/runs-index.d.ts +16 -0
- package/dist/schema/src/runs-index.js +15 -0
- package/dist/schema/src/server-config.d.ts +93 -0
- package/dist/schema/src/server-config.js +73 -0
- package/dist/schema/src/spec.d.ts +69 -0
- package/dist/schema/src/spec.js +58 -0
- package/dist/server/src/app.d.ts +62 -0
- package/dist/server/src/app.js +419 -0
- package/dist/server/src/auth.d.ts +41 -0
- package/dist/server/src/auth.js +59 -0
- package/dist/server/src/config.d.ts +83 -0
- package/dist/server/src/config.js +187 -0
- package/dist/server/src/dev.d.ts +12 -0
- package/dist/server/src/dev.js +80 -0
- package/dist/server/src/events.d.ts +29 -0
- package/dist/server/src/events.js +101 -0
- package/dist/server/src/host.d.ts +30 -0
- package/dist/server/src/host.js +115 -0
- package/dist/server/src/index.d.ts +16 -0
- package/dist/server/src/index.js +16 -0
- package/dist/server/src/llms.d.ts +19 -0
- package/dist/server/src/llms.js +63 -0
- package/dist/server/src/main.d.ts +30 -0
- package/dist/server/src/main.js +112 -0
- package/dist/server/src/openapi.d.ts +59 -0
- package/dist/server/src/openapi.js +374 -0
- package/dist/server/src/problem.d.ts +8 -0
- package/dist/server/src/problem.js +39 -0
- package/dist/server/src/site.d.ts +13 -0
- package/dist/server/src/site.js +43 -0
- package/dist/server/src/store-api.d.ts +28 -0
- package/dist/server/src/store-api.js +159 -0
- package/dist/server/src/validate.d.ts +71 -0
- package/dist/server/src/validate.js +197 -0
- package/dist/vitest/src/index.d.ts +27 -5
- package/dist/vitest/src/index.js +18 -5
- package/dist/webdriver/src/driver.d.ts +63 -11
- package/dist/webdriver/src/driver.js +57 -6
- package/dist/webdriver/src/index.d.ts +8 -0
- package/dist/webdriver/src/index.js +1 -0
- package/dist/webdriver/src/protocol.d.ts +75 -6
- package/dist/webdriver/src/protocol.js +79 -6
- package/docs/agents.md +137 -0
- package/docs/deploying.md +345 -0
- package/docs/dogfooding.md +175 -0
- package/docs/extending.md +242 -0
- package/docs/integrating.md +485 -0
- package/docs/reference/bun.md +141 -0
- package/docs/reference/cli.md +146 -0
- package/docs/reference/core.md +2426 -0
- package/docs/reference/detox.md +150 -0
- package/docs/reference/http-api.md +303 -0
- package/docs/reference/playwright.md +303 -0
- package/docs/reference/reports.md +7098 -0
- package/docs/reference/schema.md +1651 -0
- package/docs/reference/server.md +685 -0
- package/docs/reference/vitest.md +45 -0
- package/docs/reference/webdriver.md +330 -0
- package/docs/report-backends.md +144 -0
- package/docs/report-contract.md +400 -0
- package/docs/reporting-issues.md +160 -0
- package/docs/server.md +285 -0
- package/docs/statecharts.md +641 -0
- package/llms-full.txt +3506 -0
- package/llms.txt +47 -0
- package/package.json +33 -5
- package/packages/core/README.md +2 -1
- package/packages/reports/README.md +69 -2
- package/packages/reports/STORAGE.md +5 -1
- package/packages/schema/README.md +14 -0
- package/packages/schema/schemas/check-detail.schema.json +1032 -0
- package/packages/schema/schemas/checks-result.schema.json +26 -0
- package/packages/schema/schemas/command-error.schema.json +35 -0
- package/packages/schema/schemas/doctor-result.schema.json +60 -0
- package/packages/schema/schemas/effective-delta.schema.json +490 -0
- package/packages/schema/schemas/effective-evidence.schema.json +471 -0
- package/packages/schema/schemas/evidence-page.schema.json +271 -0
- package/packages/schema/schemas/hello-event.schema.json +22 -0
- package/packages/schema/schemas/init-plan.schema.json +347 -0
- package/packages/schema/schemas/layer-rows.schema.json +199 -0
- package/packages/schema/schemas/layer.schema.json +2888 -0
- package/packages/schema/schemas/merge-result.schema.json +40 -0
- package/packages/schema/schemas/outline.schema.json +62 -0
- package/packages/schema/schemas/problem.schema.json +37 -0
- package/packages/schema/schemas/publish-checks.schema.json +1413 -0
- package/packages/schema/schemas/publish-result.schema.json +168 -0
- package/packages/schema/schemas/ready.schema.json +68 -0
- package/packages/schema/schemas/report-event.schema.json +100 -0
- package/packages/schema/schemas/report-status.schema.json +370 -0
- package/packages/schema/schemas/server-config.schema.json +194 -0
- package/packages/schema/schemas/server-info.schema.json +114 -0
- package/packages/schema/schemas/spec-set.schema.json +103 -0
- package/packages/schema/schemas/store-listing.schema.json +29 -0
- package/packages/schema/schemas/store-write-result.schema.json +28 -0
- package/packages/schema/schemas/stream-result.schema.json +59 -0
- package/packages/server/README.md +43 -0
- package/packages/server/openapi.json +6699 -0
- package/packages/visualizer/README.md +27 -5
- package/packages/visualizer/example/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/example/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/example/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/example/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/example/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/example/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/failures/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/full/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/malformed/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/partial/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/removed/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/cart.qnt +7 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/checkout.openslo.yaml +10 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/drink-price.dmn +24 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/loyalty.feature +7 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/ordering.feature +36 -0
- package/packages/visualizer/fixtures/spec-only/specs/coffee/ordering/payment.als +4 -0
- package/packages/visualizer/scripts/make-fixtures.ts +2 -0
- package/packages/visualizer/scripts/publish-data.ts +1 -2
- package/packages/visualizer/src/app/AppShell.tsx +9 -2
- package/packages/visualizer/src/app/report-sources.tsx +6 -4
- package/packages/visualizer/src/app/router.tsx +3 -3
- package/packages/visualizer/src/components/Header.module.css +35 -0
- package/packages/visualizer/src/components/Header.tsx +41 -4
- package/packages/visualizer/src/data/adapters/adapter.ts +5 -17
- package/packages/visualizer/src/data/adapters/index.ts +10 -1
- package/packages/visualizer/src/evidence/api.ts +14 -2
- package/packages/visualizer/src/evidence/artifacts.module.css +213 -0
- package/packages/visualizer/src/evidence/artifacts.tsx +272 -0
- package/packages/visualizer/src/evidence/check-detail.tsx +38 -4
- package/packages/visualizer/src/evidence/evidence-context.tsx +74 -12
- package/packages/visualizer/src/evidence/evidence.module.css +20 -0
- package/packages/visualizer/src/evidence/marks.tsx +2 -0
- package/packages/visualizer/src/evidence/overview.tsx +3 -3
- package/packages/visualizer/src/evidence/sources-panel.tsx +88 -34
- package/packages/visualizer/src/evidence/spec-page.tsx +23 -16
- package/packages/visualizer/src/find/Finder.tsx +1 -7
- package/packages/visualizer/src/find/open.ts +4 -0
- package/packages/visualizer/src/live/live-stream.ts +204 -0
- package/packages/visualizer/src/runtime.ts +19 -0
- package/packages/visualizer/src/state/ui-store.ts +6 -2
- package/packages/visualizer/vite/atlas-server-proxy.ts +36 -0
- package/packages/visualizer/vite/example-reports.ts +475 -0
- package/packages/visualizer/vite.config.ts +18 -2
|
@@ -38,13 +38,34 @@ atlas-visualizer dev --specs ./specs --runs ./atlas-runs
|
|
|
38
38
|
| `--port <n>`, `--host <host>` | `dev`: where to listen (default `localhost:5180`, or the next free port). |
|
|
39
39
|
|
|
40
40
|
Relative paths resolve against the directory the command was run from. Without flags the
|
|
41
|
-
environment is read: `ATLAS_SPECS_ROOT
|
|
42
|
-
manager sets it to where you ran the command, or the current directory)
|
|
41
|
+
environment is read: `ATLAS_SPECS_ROOT` and `ATLAS_RUNS_ROOT` (relative to `INIT_CWD` when your package
|
|
42
|
+
manager sets it to where you ran the command, or the current directory). With nothing configured and no
|
|
43
43
|
`specs/` directory, the `full` example is shown.
|
|
44
44
|
|
|
45
45
|
Editing a spec file or a run publishing a snapshot updates the open page in about a second, without a reload,
|
|
46
46
|
keeping selection, zoom and pan.
|
|
47
47
|
|
|
48
|
+
### Layered reports for any spec
|
|
49
|
+
|
|
50
|
+
Besides charts and runs, the viewer shows the combined result of every spec (Gherkin, Quint, DMN,
|
|
51
|
+
Alloy, OpenSLO, …) from the layers your suites published. Point `ATLAS_REPORTS_MODULE` at a module in
|
|
52
|
+
your project that exports `reportsDevFetch`, built with `reportsHost` from
|
|
53
|
+
`@crvouga/atlas/reports/host`:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
// atlas.reports.ts
|
|
57
|
+
import { reportsHost } from '@crvouga/atlas/reports/host';
|
|
58
|
+
|
|
59
|
+
export const reportsDevFetch = reportsHost({ specs: './specs', stores: ['./atlas-reports'] });
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
ATLAS_REPORTS_MODULE="$(pwd)/atlas.reports.ts" atlas-visualizer dev --specs ./specs
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
See [integrating Atlas](../../docs/integrating.md#6-browse-it) for publishing layers and the routes
|
|
67
|
+
this serves.
|
|
68
|
+
|
|
48
69
|
### Commands
|
|
49
70
|
|
|
50
71
|
```sh
|
|
@@ -62,8 +83,7 @@ sets how often the site checks for new runs (default 60 s, plus when the tab reg
|
|
|
62
83
|
### Inside this repository
|
|
63
84
|
|
|
64
85
|
```sh
|
|
65
|
-
bun run viz:dev #
|
|
66
|
-
ATLAS_FIXTURE=partial bun run viz:dev # one of the fixtures
|
|
86
|
+
bun run viz:dev # the full coffee example, charts and layered report
|
|
67
87
|
bun test packages/visualizer/src packages/visualizer/vite # parsing, composition, statuses, every fixture
|
|
68
88
|
bun run viz:fixtures # regenerate the fixtures (needs ImageMagick, cwebp, ffmpeg)
|
|
69
89
|
```
|
|
@@ -149,7 +169,9 @@ MIT
|
|
|
149
169
|
|
|
150
170
|
Beside the statechart map, every other kind of spec has its own tab: Gherkin features, Quint models, DMN decision tables, Alloy structures and OpenSLO objectives. A tab appears when the specs folder has files of its kind. The index lists every spec with what was recorded for it, and filters to those with results, those failing, or those with none. A spec page shows each scenario, trace or check with its outcome; opening one shows the recorded steps, the error, the timings, every other run of the same check, and its recording.
|
|
151
171
|
|
|
152
|
-
Results come from the Atlas reports API (`/api/reports` in dev, `VITE_ATLAS_REPORTS_URL` when hosted elsewhere) or from a static `data/evidence` export. They combine across backends, branches and
|
|
172
|
+
Results come from the Atlas reports API (`/api/reports` in dev, `VITE_ATLAS_REPORTS_URL` when hosted elsewhere) or from a static `data/evidence` export. They combine across backends, branches, versions, environments and layers; **Sources** in the header switches any of them off. While a spec suite is running, the header says so and each finished test appears within a couple of seconds. See [Atlas reports](../reports/README.md) for the API and host configuration.
|
|
173
|
+
|
|
174
|
+
The coffee example ships those documents and a layered report. `bun run viz:dev` opens that full example, and the same report is the fallback when a working directory has no `specs/` and `ATLAS_REPORTS_MODULE` is unset. `atlas:viz` serves the same kind of report for the todo example, and adds the desktop web layer `example:run` writes. Each built-in report is five layers: an older desktop web run, a mobile web branch, Android from a device lab, a focused iOS run, and a newer desktop web run that repeated one scenario. The same check stays visible on each environment. A feature with no layer stays empty.
|
|
153
175
|
|
|
154
176
|
The header title is the product's name, taken from `atlas.yaml`'s `title` up to its first dash or colon, or "Atlas".
|
|
155
177
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
|
|
3
|
+
<decision id="drink-price" name="Drink price">
|
|
4
|
+
<decisionTable id="Drink price" hitPolicy="UNIQUE">
|
|
5
|
+
<input label="Size">
|
|
6
|
+
<inputExpression typeRef="string"><text>size</text></inputExpression>
|
|
7
|
+
</input>
|
|
8
|
+
<input label="Milk">
|
|
9
|
+
<inputExpression typeRef="string"><text>milk</text></inputExpression>
|
|
10
|
+
</input>
|
|
11
|
+
<output label="Price" name="price" />
|
|
12
|
+
<rule>
|
|
13
|
+
<inputEntry><text>"Small"</text></inputEntry>
|
|
14
|
+
<inputEntry><text>"None"</text></inputEntry>
|
|
15
|
+
<outputEntry><text>3</text></outputEntry>
|
|
16
|
+
</rule>
|
|
17
|
+
<rule>
|
|
18
|
+
<inputEntry><text>"Large"</text></inputEntry>
|
|
19
|
+
<inputEntry><text>"Oat"</text></inputEntry>
|
|
20
|
+
<outputEntry><text>5</text></outputEntry>
|
|
21
|
+
</rule>
|
|
22
|
+
</decisionTable>
|
|
23
|
+
</decision>
|
|
24
|
+
</definitions>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Order a drink
|
|
2
|
+
A customer picks a drink, pays, and picks it up.
|
|
3
|
+
|
|
4
|
+
Rule: Paying for the order
|
|
5
|
+
|
|
6
|
+
Scenario: Pays by card
|
|
7
|
+
Given a drink in the cart
|
|
8
|
+
When the customer pays by card
|
|
9
|
+
Then the barista can start the drink
|
|
10
|
+
|
|
11
|
+
Scenario: Pays with a wallet
|
|
12
|
+
Given a drink in the cart
|
|
13
|
+
When the customer pays with a wallet
|
|
14
|
+
Then the order is paid
|
|
15
|
+
|
|
16
|
+
Scenario: Card declined, then a wallet works
|
|
17
|
+
Given a drink in the cart
|
|
18
|
+
When the card is declined
|
|
19
|
+
And the customer pays with a wallet
|
|
20
|
+
Then the order is paid
|
|
21
|
+
|
|
22
|
+
Scenario: Slow payment
|
|
23
|
+
Given a drink in the cart
|
|
24
|
+
When the payment takes longer than a minute
|
|
25
|
+
Then the customer can check the payment again
|
|
26
|
+
|
|
27
|
+
Scenario: Leaves checkout and comes back
|
|
28
|
+
Given a drink in the cart
|
|
29
|
+
When the customer closes checkout
|
|
30
|
+
And the customer starts checkout again
|
|
31
|
+
Then checkout is open
|
|
32
|
+
|
|
33
|
+
Scenario: Drink left too long
|
|
34
|
+
Given a finished drink
|
|
35
|
+
When nobody picks it up
|
|
36
|
+
Then the drink is thrown away and refunded
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
|
|
3
|
+
<decision id="drink-price" name="Drink price">
|
|
4
|
+
<decisionTable id="Drink price" hitPolicy="UNIQUE">
|
|
5
|
+
<input label="Size">
|
|
6
|
+
<inputExpression typeRef="string"><text>size</text></inputExpression>
|
|
7
|
+
</input>
|
|
8
|
+
<input label="Milk">
|
|
9
|
+
<inputExpression typeRef="string"><text>milk</text></inputExpression>
|
|
10
|
+
</input>
|
|
11
|
+
<output label="Price" name="price" />
|
|
12
|
+
<rule>
|
|
13
|
+
<inputEntry><text>"Small"</text></inputEntry>
|
|
14
|
+
<inputEntry><text>"None"</text></inputEntry>
|
|
15
|
+
<outputEntry><text>3</text></outputEntry>
|
|
16
|
+
</rule>
|
|
17
|
+
<rule>
|
|
18
|
+
<inputEntry><text>"Large"</text></inputEntry>
|
|
19
|
+
<inputEntry><text>"Oat"</text></inputEntry>
|
|
20
|
+
<outputEntry><text>5</text></outputEntry>
|
|
21
|
+
</rule>
|
|
22
|
+
</decisionTable>
|
|
23
|
+
</decision>
|
|
24
|
+
</definitions>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Order a drink
|
|
2
|
+
A customer picks a drink, pays, and picks it up.
|
|
3
|
+
|
|
4
|
+
Rule: Paying for the order
|
|
5
|
+
|
|
6
|
+
Scenario: Pays by card
|
|
7
|
+
Given a drink in the cart
|
|
8
|
+
When the customer pays by card
|
|
9
|
+
Then the barista can start the drink
|
|
10
|
+
|
|
11
|
+
Scenario: Pays with a wallet
|
|
12
|
+
Given a drink in the cart
|
|
13
|
+
When the customer pays with a wallet
|
|
14
|
+
Then the order is paid
|
|
15
|
+
|
|
16
|
+
Scenario: Card declined, then a wallet works
|
|
17
|
+
Given a drink in the cart
|
|
18
|
+
When the card is declined
|
|
19
|
+
And the customer pays with a wallet
|
|
20
|
+
Then the order is paid
|
|
21
|
+
|
|
22
|
+
Scenario: Slow payment
|
|
23
|
+
Given a drink in the cart
|
|
24
|
+
When the payment takes longer than a minute
|
|
25
|
+
Then the customer can check the payment again
|
|
26
|
+
|
|
27
|
+
Scenario: Leaves checkout and comes back
|
|
28
|
+
Given a drink in the cart
|
|
29
|
+
When the customer closes checkout
|
|
30
|
+
And the customer starts checkout again
|
|
31
|
+
Then checkout is open
|
|
32
|
+
|
|
33
|
+
Scenario: Drink left too long
|
|
34
|
+
Given a finished drink
|
|
35
|
+
When nobody picks it up
|
|
36
|
+
Then the drink is thrown away and refunded
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
|
|
3
|
+
<decision id="drink-price" name="Drink price">
|
|
4
|
+
<decisionTable id="Drink price" hitPolicy="UNIQUE">
|
|
5
|
+
<input label="Size">
|
|
6
|
+
<inputExpression typeRef="string"><text>size</text></inputExpression>
|
|
7
|
+
</input>
|
|
8
|
+
<input label="Milk">
|
|
9
|
+
<inputExpression typeRef="string"><text>milk</text></inputExpression>
|
|
10
|
+
</input>
|
|
11
|
+
<output label="Price" name="price" />
|
|
12
|
+
<rule>
|
|
13
|
+
<inputEntry><text>"Small"</text></inputEntry>
|
|
14
|
+
<inputEntry><text>"None"</text></inputEntry>
|
|
15
|
+
<outputEntry><text>3</text></outputEntry>
|
|
16
|
+
</rule>
|
|
17
|
+
<rule>
|
|
18
|
+
<inputEntry><text>"Large"</text></inputEntry>
|
|
19
|
+
<inputEntry><text>"Oat"</text></inputEntry>
|
|
20
|
+
<outputEntry><text>5</text></outputEntry>
|
|
21
|
+
</rule>
|
|
22
|
+
</decisionTable>
|
|
23
|
+
</decision>
|
|
24
|
+
</definitions>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Order a drink
|
|
2
|
+
A customer picks a drink, pays, and picks it up.
|
|
3
|
+
|
|
4
|
+
Rule: Paying for the order
|
|
5
|
+
|
|
6
|
+
Scenario: Pays by card
|
|
7
|
+
Given a drink in the cart
|
|
8
|
+
When the customer pays by card
|
|
9
|
+
Then the barista can start the drink
|
|
10
|
+
|
|
11
|
+
Scenario: Pays with a wallet
|
|
12
|
+
Given a drink in the cart
|
|
13
|
+
When the customer pays with a wallet
|
|
14
|
+
Then the order is paid
|
|
15
|
+
|
|
16
|
+
Scenario: Card declined, then a wallet works
|
|
17
|
+
Given a drink in the cart
|
|
18
|
+
When the card is declined
|
|
19
|
+
And the customer pays with a wallet
|
|
20
|
+
Then the order is paid
|
|
21
|
+
|
|
22
|
+
Scenario: Slow payment
|
|
23
|
+
Given a drink in the cart
|
|
24
|
+
When the payment takes longer than a minute
|
|
25
|
+
Then the customer can check the payment again
|
|
26
|
+
|
|
27
|
+
Scenario: Leaves checkout and comes back
|
|
28
|
+
Given a drink in the cart
|
|
29
|
+
When the customer closes checkout
|
|
30
|
+
And the customer starts checkout again
|
|
31
|
+
Then checkout is open
|
|
32
|
+
|
|
33
|
+
Scenario: Drink left too long
|
|
34
|
+
Given a finished drink
|
|
35
|
+
When nobody picks it up
|
|
36
|
+
Then the drink is thrown away and refunded
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
|
|
3
|
+
<decision id="drink-price" name="Drink price">
|
|
4
|
+
<decisionTable id="Drink price" hitPolicy="UNIQUE">
|
|
5
|
+
<input label="Size">
|
|
6
|
+
<inputExpression typeRef="string"><text>size</text></inputExpression>
|
|
7
|
+
</input>
|
|
8
|
+
<input label="Milk">
|
|
9
|
+
<inputExpression typeRef="string"><text>milk</text></inputExpression>
|
|
10
|
+
</input>
|
|
11
|
+
<output label="Price" name="price" />
|
|
12
|
+
<rule>
|
|
13
|
+
<inputEntry><text>"Small"</text></inputEntry>
|
|
14
|
+
<inputEntry><text>"None"</text></inputEntry>
|
|
15
|
+
<outputEntry><text>3</text></outputEntry>
|
|
16
|
+
</rule>
|
|
17
|
+
<rule>
|
|
18
|
+
<inputEntry><text>"Large"</text></inputEntry>
|
|
19
|
+
<inputEntry><text>"Oat"</text></inputEntry>
|
|
20
|
+
<outputEntry><text>5</text></outputEntry>
|
|
21
|
+
</rule>
|
|
22
|
+
</decisionTable>
|
|
23
|
+
</decision>
|
|
24
|
+
</definitions>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Order a drink
|
|
2
|
+
A customer picks a drink, pays, and picks it up.
|
|
3
|
+
|
|
4
|
+
Rule: Paying for the order
|
|
5
|
+
|
|
6
|
+
Scenario: Pays by card
|
|
7
|
+
Given a drink in the cart
|
|
8
|
+
When the customer pays by card
|
|
9
|
+
Then the barista can start the drink
|
|
10
|
+
|
|
11
|
+
Scenario: Pays with a wallet
|
|
12
|
+
Given a drink in the cart
|
|
13
|
+
When the customer pays with a wallet
|
|
14
|
+
Then the order is paid
|
|
15
|
+
|
|
16
|
+
Scenario: Card declined, then a wallet works
|
|
17
|
+
Given a drink in the cart
|
|
18
|
+
When the card is declined
|
|
19
|
+
And the customer pays with a wallet
|
|
20
|
+
Then the order is paid
|
|
21
|
+
|
|
22
|
+
Scenario: Slow payment
|
|
23
|
+
Given a drink in the cart
|
|
24
|
+
When the payment takes longer than a minute
|
|
25
|
+
Then the customer can check the payment again
|
|
26
|
+
|
|
27
|
+
Scenario: Leaves checkout and comes back
|
|
28
|
+
Given a drink in the cart
|
|
29
|
+
When the customer closes checkout
|
|
30
|
+
And the customer starts checkout again
|
|
31
|
+
Then checkout is open
|
|
32
|
+
|
|
33
|
+
Scenario: Drink left too long
|
|
34
|
+
Given a finished drink
|
|
35
|
+
When nobody picks it up
|
|
36
|
+
Then the drink is thrown away and refunded
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
|
|
3
|
+
<decision id="drink-price" name="Drink price">
|
|
4
|
+
<decisionTable id="Drink price" hitPolicy="UNIQUE">
|
|
5
|
+
<input label="Size">
|
|
6
|
+
<inputExpression typeRef="string"><text>size</text></inputExpression>
|
|
7
|
+
</input>
|
|
8
|
+
<input label="Milk">
|
|
9
|
+
<inputExpression typeRef="string"><text>milk</text></inputExpression>
|
|
10
|
+
</input>
|
|
11
|
+
<output label="Price" name="price" />
|
|
12
|
+
<rule>
|
|
13
|
+
<inputEntry><text>"Small"</text></inputEntry>
|
|
14
|
+
<inputEntry><text>"None"</text></inputEntry>
|
|
15
|
+
<outputEntry><text>3</text></outputEntry>
|
|
16
|
+
</rule>
|
|
17
|
+
<rule>
|
|
18
|
+
<inputEntry><text>"Large"</text></inputEntry>
|
|
19
|
+
<inputEntry><text>"Oat"</text></inputEntry>
|
|
20
|
+
<outputEntry><text>5</text></outputEntry>
|
|
21
|
+
</rule>
|
|
22
|
+
</decisionTable>
|
|
23
|
+
</decision>
|
|
24
|
+
</definitions>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Order a drink
|
|
2
|
+
A customer picks a drink, pays, and picks it up.
|
|
3
|
+
|
|
4
|
+
Rule: Paying for the order
|
|
5
|
+
|
|
6
|
+
Scenario: Pays by card
|
|
7
|
+
Given a drink in the cart
|
|
8
|
+
When the customer pays by card
|
|
9
|
+
Then the barista can start the drink
|
|
10
|
+
|
|
11
|
+
Scenario: Pays with a wallet
|
|
12
|
+
Given a drink in the cart
|
|
13
|
+
When the customer pays with a wallet
|
|
14
|
+
Then the order is paid
|
|
15
|
+
|
|
16
|
+
Scenario: Card declined, then a wallet works
|
|
17
|
+
Given a drink in the cart
|
|
18
|
+
When the card is declined
|
|
19
|
+
And the customer pays with a wallet
|
|
20
|
+
Then the order is paid
|
|
21
|
+
|
|
22
|
+
Scenario: Slow payment
|
|
23
|
+
Given a drink in the cart
|
|
24
|
+
When the payment takes longer than a minute
|
|
25
|
+
Then the customer can check the payment again
|
|
26
|
+
|
|
27
|
+
Scenario: Leaves checkout and comes back
|
|
28
|
+
Given a drink in the cart
|
|
29
|
+
When the customer closes checkout
|
|
30
|
+
And the customer starts checkout again
|
|
31
|
+
Then checkout is open
|
|
32
|
+
|
|
33
|
+
Scenario: Drink left too long
|
|
34
|
+
Given a finished drink
|
|
35
|
+
When nobody picks it up
|
|
36
|
+
Then the drink is thrown away and refunded
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
|
|
3
|
+
<decision id="drink-price" name="Drink price">
|
|
4
|
+
<decisionTable id="Drink price" hitPolicy="UNIQUE">
|
|
5
|
+
<input label="Size">
|
|
6
|
+
<inputExpression typeRef="string"><text>size</text></inputExpression>
|
|
7
|
+
</input>
|
|
8
|
+
<input label="Milk">
|
|
9
|
+
<inputExpression typeRef="string"><text>milk</text></inputExpression>
|
|
10
|
+
</input>
|
|
11
|
+
<output label="Price" name="price" />
|
|
12
|
+
<rule>
|
|
13
|
+
<inputEntry><text>"Small"</text></inputEntry>
|
|
14
|
+
<inputEntry><text>"None"</text></inputEntry>
|
|
15
|
+
<outputEntry><text>3</text></outputEntry>
|
|
16
|
+
</rule>
|
|
17
|
+
<rule>
|
|
18
|
+
<inputEntry><text>"Large"</text></inputEntry>
|
|
19
|
+
<inputEntry><text>"Oat"</text></inputEntry>
|
|
20
|
+
<outputEntry><text>5</text></outputEntry>
|
|
21
|
+
</rule>
|
|
22
|
+
</decisionTable>
|
|
23
|
+
</decision>
|
|
24
|
+
</definitions>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Feature: Order a drink
|
|
2
|
+
A customer picks a drink, pays, and picks it up.
|
|
3
|
+
|
|
4
|
+
Rule: Paying for the order
|
|
5
|
+
|
|
6
|
+
Scenario: Pays by card
|
|
7
|
+
Given a drink in the cart
|
|
8
|
+
When the customer pays by card
|
|
9
|
+
Then the barista can start the drink
|
|
10
|
+
|
|
11
|
+
Scenario: Pays with a wallet
|
|
12
|
+
Given a drink in the cart
|
|
13
|
+
When the customer pays with a wallet
|
|
14
|
+
Then the order is paid
|
|
15
|
+
|
|
16
|
+
Scenario: Card declined, then a wallet works
|
|
17
|
+
Given a drink in the cart
|
|
18
|
+
When the card is declined
|
|
19
|
+
And the customer pays with a wallet
|
|
20
|
+
Then the order is paid
|
|
21
|
+
|
|
22
|
+
Scenario: Slow payment
|
|
23
|
+
Given a drink in the cart
|
|
24
|
+
When the payment takes longer than a minute
|
|
25
|
+
Then the customer can check the payment again
|
|
26
|
+
|
|
27
|
+
Scenario: Leaves checkout and comes back
|
|
28
|
+
Given a drink in the cart
|
|
29
|
+
When the customer closes checkout
|
|
30
|
+
And the customer starts checkout again
|
|
31
|
+
Then checkout is open
|
|
32
|
+
|
|
33
|
+
Scenario: Drink left too long
|
|
34
|
+
Given a finished drink
|
|
35
|
+
When nobody picks it up
|
|
36
|
+
Then the drink is thrown away and refunded
|