@bugmole/cli 0.4.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/.bugmole.env.example +20 -0
- package/LICENSE +7 -0
- package/README.md +293 -0
- package/TESTING.md +117 -0
- package/bugmole.config.yaml +39 -0
- package/package.json +85 -0
- package/scripts/billing/paypal-setup.mjs +121 -0
- package/scripts/bugmole-continue.ts +318 -0
- package/scripts/bugmole-init.ts +188 -0
- package/scripts/bugmole.cjs +17 -0
- package/scripts/bugmole.test.ts +344 -0
- package/scripts/bugmole.ts +657 -0
- package/scripts/ensure-maestro.cjs +79 -0
- package/scripts/ios-tunnel-keeper.sh +45 -0
- package/scripts/ios-wda-keeper.sh +66 -0
- package/scripts/sync-plan-catalog.d.mts +3 -0
- package/scripts/sync-plan-catalog.mjs +16 -0
- package/scripts/ui-parity-diff.py +65 -0
- package/scripts/ui-parity-requirements.txt +1 -0
- package/scripts/verify-manage-to-plans.mts +194 -0
- package/spec/app-ui-audit.schema.json +176 -0
- package/spec/blockers.yaml +79 -0
- package/spec/bugs.index.json +42 -0
- package/spec/design-dna.schema.json +38 -0
- package/spec/domain_rules.yaml +24 -0
- package/spec/flows/flow_manage-to-plans-64c3c61b.yaml +8 -0
- package/spec/flows/flow_screen-to-evidence-6c3ab309.yaml +7 -0
- package/spec/journey_graph.yaml +126 -0
- package/spec/journeys.graph.json +2618 -0
- package/spec/plans/dashboard-smoke.flow.yaml +20 -0
- package/spec/plans/example.flow.yaml +99 -0
- package/spec/plans/flow_api-keys-to-logout-7396cd5d.flow.yaml +33 -0
- package/spec/plans/flow_api-keys-to-screen-157e10a6.flow.yaml +33 -0
- package/spec/plans/flow_manage-to-audits-176c1eb8.flow.yaml +33 -0
- package/spec/plans/flow_manage-to-blockers-633282c8.flow.yaml +112 -0
- package/spec/plans/flow_manage-to-devices-ad57e202.flow.yaml +33 -0
- package/spec/plans/flow_manage-to-logout-86c54656.flow.yaml +33 -0
- package/spec/plans/flow_manage-to-manage-resource-action-6325f99a.flow.yaml +185 -0
- package/spec/plans/flow_manage-to-parity-issues-01fa2579.flow.yaml +34 -0
- package/spec/plans/flow_manage-to-plans-64c3c61b.flow.yaml +123 -0
- package/spec/plans/flow_manage-to-screen-6857f915.flow.yaml +106 -0
- package/spec/plans/flow_manage-to-tasks-c5791c95.flow.yaml +33 -0
- package/spec/plans/flow_profile-to-screen-6045aa3d.flow.yaml +33 -0
- package/spec/plans/flow_register-to-api-auth-login-460a9cc8.flow.yaml +34 -0
- package/spec/plans/flow_screen-to-audits-07666356.flow.yaml +33 -0
- package/spec/plans/flow_screen-to-blockers-091d258b.flow.yaml +33 -0
- package/spec/plans/flow_screen-to-devices-cad72f75.flow.yaml +33 -0
- package/spec/plans/flow_screen-to-evidence-6c3ab309.flow.yaml +126 -0
- package/spec/plans/flow_screen-to-parity-issues-2218e3ad.flow.yaml +34 -0
- package/spec/plans/flow_screen-to-plans-8232a94f.flow.yaml +33 -0
- package/spec/plans/flow_screen-to-tasks-540671d1.flow.yaml +33 -0
- package/spec/plans/login.flow.yaml +22 -0
- package/spec/plans/owner-operations.flow.yaml +20 -0
- package/spec/project_config.yaml +55 -0
- package/spec/roles.yaml +30 -0
- package/spec/schema.md +394 -0
- package/spec/test-case-results.schema.json +62 -0
- package/spec/test-cases.schema.json +85 -0
- package/spec/ui-parity-audit.schema.json +194 -0
- package/spec/ui-reverse-engineering.schema.json +94 -0
- package/src/billing/plan-catalog.test.ts +46 -0
- package/src/billing/plan-catalog.ts +199 -0
- package/src/integrations/aws-sigv4.test.ts +42 -0
- package/src/integrations/aws-sigv4.ts +72 -0
- package/src/integrations/device-farm.ts +155 -0
- package/src/integrations/github-app.test.ts +57 -0
- package/src/integrations/github-app.ts +143 -0
- package/src/integrations/gitlab.ts +81 -0
- package/src/integrations/temp-email.test.ts +123 -0
- package/src/integrations/temp-email.ts +175 -0
- package/src/integrations/testflight-feedback.test.ts +51 -0
- package/src/integrations/testflight-feedback.ts +173 -0
- package/src/integrations/webdriver-client.ts +131 -0
- package/src/mcp/server.test.ts +1220 -0
- package/src/mcp/server.ts +3064 -0
- package/src/mcp/write-test-cases.test.ts +287 -0
- package/src/registry/api-key-client.ts +39 -0
- package/src/registry/control-plane-client.ts +212 -0
- package/src/registry/migrations/0001_registry.sql +47 -0
- package/src/registry/migrations/0002_device_authorizations.sql +23 -0
- package/src/registry/migrations/0003_project_environments.sql +25 -0
- package/src/registry/migrations/0004_device_authorization_email.sql +1 -0
- package/src/registry/migrations/0005_testing_control_plane.sql +55 -0
- package/src/registry/migrations/0006_workspaces.sql +36 -0
- package/src/registry/migrations/0007_project_apps.sql +26 -0
- package/src/registry/migrations/0008_agent_tasks.sql +30 -0
- package/src/registry/migrations/0009_journey_revisions.sql +17 -0
- package/src/registry/migrations/0010_agent_task_journey.sql +2 -0
- package/src/registry/migrations/0011_run_journey_revision.sql +1 -0
- package/src/registry/migrations/0012_canonical_flow_execution.sql +10 -0
- package/src/registry/migrations/0013_device_sessions.sql +22 -0
- package/src/registry/migrations/0014_agent_task_step.sql +1 -0
- package/src/registry/migrations/0015_agent_task_attempts.sql +6 -0
- package/src/registry/migrations/0016_github_issue_tracker.sql +54 -0
- package/src/registry/migrations/0017_run_targets.sql +7 -0
- package/src/registry/migrations/0018_run_fix_from.sql +4 -0
- package/src/registry/migrations/0019_workspace_flags.sql +9 -0
- package/src/registry/migrations/0020_orgs.sql +40 -0
- package/src/registry/migrations/0021_billing_core.sql +58 -0
- package/src/registry/migrations/0022_cloud_runners.sql +19 -0
- package/src/registry/migrations/0023_signup.sql +4 -0
- package/src/registry/migrations/0024_billing.sql +67 -0
- package/src/registry/migrations/0025_notifications.sql +47 -0
- package/src/registry/migrations/0026_repo_bindings.sql +28 -0
- package/src/registry/migrations/0027_feedback.sql +29 -0
- package/src/registry/migrations/0028_devices.sql +48 -0
- package/src/registry/migrations/0029_sso.sql +31 -0
- package/src/registry/migrations/0030_workspace_domains.sql +18 -0
- package/src/registry/migrations/0031_gitlab_and_teams.sql +45 -0
- package/src/registry/migrations/0032_personas.sql +15 -0
- package/src/registry/migrations/0033_bugmole_rename.sql +11 -0
- package/src/registry/task-scheduling.test.ts +100 -0
- package/src/registry/task-scheduling.ts +80 -0
- package/src/registry-worker/ai/platform-model.ts +77 -0
- package/src/registry-worker/ai/routes.test.ts +88 -0
- package/src/registry-worker/ai/routes.ts +90 -0
- package/src/registry-worker/artifacts.test.ts +98 -0
- package/src/registry-worker/artifacts.ts +85 -0
- package/src/registry-worker/billing/billing-core.test.ts +175 -0
- package/src/registry-worker/billing/checkout-routes.ts +209 -0
- package/src/registry-worker/billing/enforcement.ts +69 -0
- package/src/registry-worker/billing/entitlements.ts +108 -0
- package/src/registry-worker/billing/ledger.ts +186 -0
- package/src/registry-worker/billing/paypal/api.ts +259 -0
- package/src/registry-worker/billing/paypal/client.ts +91 -0
- package/src/registry-worker/billing/paypal/provider.ts +143 -0
- package/src/registry-worker/billing/paypal.test.ts +466 -0
- package/src/registry-worker/billing/provider.ts +114 -0
- package/src/registry-worker/billing/routes.ts +66 -0
- package/src/registry-worker/billing/subscriptions.ts +780 -0
- package/src/registry-worker/billing/thresholds.ts +107 -0
- package/src/registry-worker/core.ts +308 -0
- package/src/registry-worker/devices/devices.test.ts +185 -0
- package/src/registry-worker/devices/policy.ts +71 -0
- package/src/registry-worker/devices/routes.ts +453 -0
- package/src/registry-worker/domains/domains.test.ts +210 -0
- package/src/registry-worker/domains/routes.ts +139 -0
- package/src/registry-worker/domains.ts +88 -0
- package/src/registry-worker/email/sender.ts +75 -0
- package/src/registry-worker/env.d.ts +14716 -0
- package/src/registry-worker/features.ts +20 -0
- package/src/registry-worker/feedback/feedback.test.ts +230 -0
- package/src/registry-worker/feedback/format.ts +148 -0
- package/src/registry-worker/feedback/routes.ts +386 -0
- package/src/registry-worker/flags.ts +39 -0
- package/src/registry-worker/github/checks.test.ts +177 -0
- package/src/registry-worker/github/checks.ts +374 -0
- package/src/registry-worker/gitlab/checks.test.ts +141 -0
- package/src/registry-worker/gitlab/checks.ts +349 -0
- package/src/registry-worker/hooks.ts +54 -0
- package/src/registry-worker/index.ts +2077 -0
- package/src/registry-worker/jobs/index.ts +29 -0
- package/src/registry-worker/jobs/retention.ts +68 -0
- package/src/registry-worker/mcp/mcp.test.ts +355 -0
- package/src/registry-worker/mcp/routes.ts +215 -0
- package/src/registry-worker/mcp/token.ts +126 -0
- package/src/registry-worker/mcp/tools.ts +563 -0
- package/src/registry-worker/notifications/alerts.ts +212 -0
- package/src/registry-worker/notifications/notifications.test.ts +298 -0
- package/src/registry-worker/notifications/outbox.ts +83 -0
- package/src/registry-worker/notifications/routes.ts +280 -0
- package/src/registry-worker/notifications/secrets.ts +49 -0
- package/src/registry-worker/notifications/slack.ts +96 -0
- package/src/registry-worker/notifications/teams.ts +46 -0
- package/src/registry-worker/org/audit.ts +116 -0
- package/src/registry-worker/org/routes.test.ts +163 -0
- package/src/registry-worker/org/routes.ts +302 -0
- package/src/registry-worker/personas/personas.test.ts +78 -0
- package/src/registry-worker/personas/routes.ts +100 -0
- package/src/registry-worker/repo-triggers.ts +20 -0
- package/src/registry-worker/routes/index.ts +74 -0
- package/src/registry-worker/run-events.ts +24 -0
- package/src/registry-worker/runner/dispatch.ts +219 -0
- package/src/registry-worker/runner/jobs.ts +43 -0
- package/src/registry-worker/runner/metering.ts +82 -0
- package/src/registry-worker/runner/policy.ts +59 -0
- package/src/registry-worker/runner/routes.ts +171 -0
- package/src/registry-worker/runner/runner.test.ts +358 -0
- package/src/registry-worker/runner/tokens.ts +93 -0
- package/src/registry-worker/runs.test.ts +60 -0
- package/src/registry-worker/signup/policy.ts +57 -0
- package/src/registry-worker/signup/routes.ts +106 -0
- package/src/registry-worker/signup/signup.test.ts +81 -0
- package/src/registry-worker/sso/aegis.ts +141 -0
- package/src/registry-worker/sso/membership.ts +157 -0
- package/src/registry-worker/sso/routes.ts +458 -0
- package/src/registry-worker/sso/sso.test.ts +344 -0
- package/src/registry-worker/testing/d1-shim.ts +180 -0
- package/src/registry-worker/testing/harness.ts +137 -0
- package/src/runner-worker/index.ts +108 -0
- package/src/runtime/ai-analysis.ts +97 -0
- package/src/runtime/ai-exploration.test.ts +32 -0
- package/src/runtime/ai-exploration.ts +69 -0
- package/src/runtime/ai-repair.ts +74 -0
- package/src/runtime/ai-work.test.ts +99 -0
- package/src/runtime/android-screen-record.test.ts +75 -0
- package/src/runtime/android-screen-record.ts +192 -0
- package/src/runtime/app-understanding.test.ts +123 -0
- package/src/runtime/app-understanding.ts +201 -0
- package/src/runtime/appium-driver.test.ts +179 -0
- package/src/runtime/appium-driver.ts +295 -0
- package/src/runtime/blocker-resolution.test.ts +113 -0
- package/src/runtime/blocker-resolution.ts +111 -0
- package/src/runtime/browser-matrix.integration.test.ts +212 -0
- package/src/runtime/browser-matrix.test.ts +143 -0
- package/src/runtime/browser-matrix.ts +200 -0
- package/src/runtime/canonical-flow.test.ts +52 -0
- package/src/runtime/config-validate.ts +185 -0
- package/src/runtime/continuous-execution.ts +291 -0
- package/src/runtime/cursor-applescript.ts +573 -0
- package/src/runtime/cursor-cli-driver.test.ts +78 -0
- package/src/runtime/cursor-cli-driver.ts +156 -0
- package/src/runtime/cursor-driver-example.ts +117 -0
- package/src/runtime/cursor-driver-index.ts +65 -0
- package/src/runtime/cursor-driver-init.ts +277 -0
- package/src/runtime/cursor-driver-run.test.ts +15 -0
- package/src/runtime/cursor-driver-run.ts +323 -0
- package/src/runtime/cursor-driver.ts +332 -0
- package/src/runtime/cursor-llm-example.ts +90 -0
- package/src/runtime/cursor-llm.ts +206 -0
- package/src/runtime/cursor-mcp-monitor.ts +386 -0
- package/src/runtime/device-clouds/browserstack.ts +73 -0
- package/src/runtime/device-clouds/device-farm.ts +52 -0
- package/src/runtime/device-clouds/index.ts +92 -0
- package/src/runtime/device-clouds/kobiton.ts +70 -0
- package/src/runtime/device-clouds/targets.ts +44 -0
- package/src/runtime/device-clouds/types.ts +62 -0
- package/src/runtime/diff-proposal.ts +84 -0
- package/src/runtime/discovery-task.test.ts +29 -0
- package/src/runtime/discovery-task.ts +284 -0
- package/src/runtime/driver-recovery.ts +69 -0
- package/src/runtime/driver.ts +79 -0
- package/src/runtime/environment.test.ts +104 -0
- package/src/runtime/environment.ts +137 -0
- package/src/runtime/executor.test.ts +509 -0
- package/src/runtime/executor.ts +921 -0
- package/src/runtime/explorer.test.ts +101 -0
- package/src/runtime/explorer.ts +1013 -0
- package/src/runtime/failure-analysis.test.ts +111 -0
- package/src/runtime/failure-analysis.ts +272 -0
- package/src/runtime/fixtures/fake-maestro.sh +36 -0
- package/src/runtime/flow-language.test.ts +268 -0
- package/src/runtime/flow-language.ts +414 -0
- package/src/runtime/init-wizard.ts +354 -0
- package/src/runtime/ios-screen-record.test.ts +68 -0
- package/src/runtime/ios-screen-record.ts +155 -0
- package/src/runtime/journey-editor.ts +452 -0
- package/src/runtime/journey-evidence.test.ts +161 -0
- package/src/runtime/journey-evidence.ts +180 -0
- package/src/runtime/journey-graph.test.ts +257 -0
- package/src/runtime/journey-graph.ts +170 -0
- package/src/runtime/legacy-names.ts +32 -0
- package/src/runtime/llm-example.ts +105 -0
- package/src/runtime/llm.ts +527 -0
- package/src/runtime/local-browser.test.ts +45 -0
- package/src/runtime/local-browser.ts +48 -0
- package/src/runtime/local-registry-stub.test.ts +325 -0
- package/src/runtime/local-registry-stub.ts +803 -0
- package/src/runtime/maestro-driver.test.ts +84 -0
- package/src/runtime/maestro-driver.ts +209 -0
- package/src/runtime/mole-voice.ts +21 -0
- package/src/runtime/nav-crawl.test.ts +100 -0
- package/src/runtime/nav-crawl.ts +153 -0
- package/src/runtime/pipeline.test.ts +405 -0
- package/src/runtime/pipeline.ts +833 -0
- package/src/runtime/planner.test.ts +37 -0
- package/src/runtime/planner.ts +274 -0
- package/src/runtime/platform-ai.ts +76 -0
- package/src/runtime/playwright-driver.test.ts +93 -0
- package/src/runtime/playwright-driver.ts +620 -0
- package/src/runtime/project-spec.ts +140 -0
- package/src/runtime/record-run-verdicts.ts +68 -0
- package/src/runtime/reporter.test.ts +56 -0
- package/src/runtime/reporter.ts +158 -0
- package/src/runtime/reset.test.ts +44 -0
- package/src/runtime/reset.ts +61 -0
- package/src/runtime/reviewer.test.ts +73 -0
- package/src/runtime/reviewer.ts +158 -0
- package/src/runtime/run-job.ts +136 -0
- package/src/runtime/run-once.test.ts +207 -0
- package/src/runtime/run-once.ts +168 -0
- package/src/runtime/run.ts +132 -0
- package/src/runtime/screen-recording.ts +34 -0
- package/src/runtime/serve-gateway.test.ts +74 -0
- package/src/runtime/serve-gateway.ts +164 -0
- package/src/runtime/serve-worker.test.ts +23 -0
- package/src/runtime/serve-worker.ts +278 -0
- package/src/runtime/site-discovery.test.ts +168 -0
- package/src/runtime/site-discovery.ts +308 -0
- package/src/runtime/target-runner.ts +144 -0
- package/src/runtime/test-case-verdicts.test.ts +94 -0
- package/src/runtime/test-case-verdicts.ts +120 -0
- package/src/runtime/ui-reverse-engineering/coordinator.test.ts +59 -0
- package/src/runtime/ui-reverse-engineering/coordinator.ts +391 -0
- package/src/runtime/ui-reverse-engineering/types.ts +197 -0
- package/src/runtime/web-suite.test.ts +97 -0
- package/src/runtime/web-suite.ts +176 -0
- package/src/storage/create-object-store.ts +144 -0
- package/src/storage/keys.ts +34 -0
- package/src/storage/local-artifact-server.test.ts +314 -0
- package/src/storage/local-artifact-server.ts +357 -0
- package/src/storage/object-store.test.ts +28 -0
- package/src/storage/object-store.ts +101 -0
- package/src/storage/registry-object-store.ts +88 -0
- package/src/storage/remote-object-store.ts +104 -0
- package/src/storage/storage-directory.test.ts +43 -0
- package/src/storage/storage-directory.ts +24 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
id: dashboard-smoke
|
|
3
|
+
name: "Journey: dashboard-smoke"
|
|
4
|
+
description: Generated plan for journey dashboard-smoke with actor qa-agent
|
|
5
|
+
suites:
|
|
6
|
+
- id: default
|
|
7
|
+
runs: on_demand
|
|
8
|
+
journeys:
|
|
9
|
+
- id: dashboard-smoke
|
|
10
|
+
actor: qa-agent
|
|
11
|
+
goal: "Complete journey: dashboard-smoke"
|
|
12
|
+
capabilities_required: []
|
|
13
|
+
preconditions:
|
|
14
|
+
- Test tenant / sandbox is active
|
|
15
|
+
- Actor account exists
|
|
16
|
+
steps:
|
|
17
|
+
- action: auth.login
|
|
18
|
+
proofs:
|
|
19
|
+
- type: navigation
|
|
20
|
+
expects: screen:dashboard
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
id: example.core
|
|
3
|
+
name: Example Core Journeys
|
|
4
|
+
description: >
|
|
5
|
+
Example plan file showing the structure of a journey plan.
|
|
6
|
+
Replace this with your application's actual core journeys.
|
|
7
|
+
|
|
8
|
+
TEMPLATE: This is a domain-agnostic example. Adapt the journey steps,
|
|
9
|
+
actions, and proofs to match your application's actual workflows.
|
|
10
|
+
|
|
11
|
+
suites:
|
|
12
|
+
- id: daily_core
|
|
13
|
+
runs: daily
|
|
14
|
+
journeys:
|
|
15
|
+
# Example: Basic happy-path journey
|
|
16
|
+
- id: user.login.create_content.view_content.logout
|
|
17
|
+
actor: user
|
|
18
|
+
goal: "Complete a basic content creation workflow from start to finish"
|
|
19
|
+
capabilities_required:
|
|
20
|
+
- auth.login
|
|
21
|
+
- content.create
|
|
22
|
+
- content.view
|
|
23
|
+
- auth.logout
|
|
24
|
+
preconditions:
|
|
25
|
+
- "Test tenant / sandbox is active"
|
|
26
|
+
- "Test user account exists (watermarked or in test data)"
|
|
27
|
+
- "Application is accessible and responsive"
|
|
28
|
+
steps:
|
|
29
|
+
- action: auth.login
|
|
30
|
+
proofs:
|
|
31
|
+
- type: navigation
|
|
32
|
+
expects: "screen:dashboard"
|
|
33
|
+
- action: content.create
|
|
34
|
+
proofs:
|
|
35
|
+
- type: navigation
|
|
36
|
+
expects: "screen:content_editor"
|
|
37
|
+
- action: content.fill_form
|
|
38
|
+
params:
|
|
39
|
+
title: "Test Content"
|
|
40
|
+
body: "Test body text"
|
|
41
|
+
proofs:
|
|
42
|
+
- type: dom
|
|
43
|
+
expects: "visible:[data-testid='content-title'][value='Test Content']"
|
|
44
|
+
- action: content.submit
|
|
45
|
+
proofs:
|
|
46
|
+
- type: network
|
|
47
|
+
expects: "POST /api/content status 200"
|
|
48
|
+
- type: dom
|
|
49
|
+
expects: "content_status == PUBLISHED"
|
|
50
|
+
- action: content.view
|
|
51
|
+
proofs:
|
|
52
|
+
- type: navigation
|
|
53
|
+
expects: "screen:content_view"
|
|
54
|
+
- type: dom
|
|
55
|
+
expects: "visible:[data-testid='content-title'][text='Test Content']"
|
|
56
|
+
- action: auth.logout
|
|
57
|
+
proofs:
|
|
58
|
+
- type: navigation
|
|
59
|
+
expects: "screen:login"
|
|
60
|
+
|
|
61
|
+
# Example: Negative case - permission denied
|
|
62
|
+
- id: viewer.cannot_create_content
|
|
63
|
+
actor: viewer
|
|
64
|
+
goal: "Verify that viewers cannot create content"
|
|
65
|
+
capabilities_required:
|
|
66
|
+
- auth.login
|
|
67
|
+
- content.view
|
|
68
|
+
preconditions:
|
|
69
|
+
- "Viewer account exists"
|
|
70
|
+
- "Viewer is logged in"
|
|
71
|
+
steps:
|
|
72
|
+
- action: content.create
|
|
73
|
+
expected_outcome: blocked
|
|
74
|
+
proofs:
|
|
75
|
+
- type: dom
|
|
76
|
+
expects: "visible:[data-testid='error-message'][text*='permission']"
|
|
77
|
+
- type: navigation
|
|
78
|
+
expects: "screen != content_editor"
|
|
79
|
+
|
|
80
|
+
# Example: Variant with different preconditions
|
|
81
|
+
- id: admin.can_override_restrictions
|
|
82
|
+
actor: admin
|
|
83
|
+
goal: "Verify admin can override restrictions"
|
|
84
|
+
capabilities_required:
|
|
85
|
+
- auth.login
|
|
86
|
+
- admin.override_restrictions
|
|
87
|
+
- content.create
|
|
88
|
+
variants:
|
|
89
|
+
- id: admin_override_when_restricted
|
|
90
|
+
preconditions:
|
|
91
|
+
- "Content creation is restricted for standard users"
|
|
92
|
+
- "Admin account exists"
|
|
93
|
+
steps:
|
|
94
|
+
- action: content.create
|
|
95
|
+
proofs:
|
|
96
|
+
- type: navigation
|
|
97
|
+
expects: "screen:content_editor"
|
|
98
|
+
- type: dom
|
|
99
|
+
expects: "visible:[data-testid='admin-override-badge']"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_api-keys-to-logout-7396cd5d
|
|
3
|
+
name: "Journey: flow:api-keys-to-logout-7396cd5d"
|
|
4
|
+
description: Generated plan for journey flow:api-keys-to-logout-7396cd5d with actor user
|
|
5
|
+
driver: maestro
|
|
6
|
+
platform: web
|
|
7
|
+
target:
|
|
8
|
+
base_url: http://localhost:3020
|
|
9
|
+
flow: null
|
|
10
|
+
recovery:
|
|
11
|
+
enabled: false
|
|
12
|
+
max_attempts: 1
|
|
13
|
+
timeout_ms: 30000
|
|
14
|
+
journey_revision: 2
|
|
15
|
+
suites:
|
|
16
|
+
- id: default
|
|
17
|
+
runs: on_demand
|
|
18
|
+
journeys:
|
|
19
|
+
- id: flow:api-keys-to-logout-7396cd5d
|
|
20
|
+
actor: user
|
|
21
|
+
goal: "Complete journey: flow:api-keys-to-logout-7396cd5d"
|
|
22
|
+
capabilities_required: []
|
|
23
|
+
preconditions:
|
|
24
|
+
- Test tenant / sandbox is active
|
|
25
|
+
- Actor account exists
|
|
26
|
+
steps:
|
|
27
|
+
- node_id: screen:/api-keys
|
|
28
|
+
action: navigate:/logout
|
|
29
|
+
proofs:
|
|
30
|
+
- type: navigation
|
|
31
|
+
expects: screen:/logout
|
|
32
|
+
- type: dom
|
|
33
|
+
expects: "screen source: src/app/api-keys/page.tsx"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_api-keys-to-screen-157e10a6
|
|
3
|
+
name: "Journey: flow:api-keys-to-screen-157e10a6"
|
|
4
|
+
description: Generated plan for journey flow:api-keys-to-screen-157e10a6 with actor user
|
|
5
|
+
driver: maestro
|
|
6
|
+
platform: web
|
|
7
|
+
target:
|
|
8
|
+
base_url: http://localhost:3020
|
|
9
|
+
flow: null
|
|
10
|
+
recovery:
|
|
11
|
+
enabled: false
|
|
12
|
+
max_attempts: 1
|
|
13
|
+
timeout_ms: 30000
|
|
14
|
+
journey_revision: 3
|
|
15
|
+
suites:
|
|
16
|
+
- id: default
|
|
17
|
+
runs: on_demand
|
|
18
|
+
journeys:
|
|
19
|
+
- id: flow:api-keys-to-screen-157e10a6
|
|
20
|
+
actor: user
|
|
21
|
+
goal: "Complete journey: flow:api-keys-to-screen-157e10a6"
|
|
22
|
+
capabilities_required: []
|
|
23
|
+
preconditions:
|
|
24
|
+
- Test tenant / sandbox is active
|
|
25
|
+
- Actor account exists
|
|
26
|
+
steps:
|
|
27
|
+
- node_id: screen:/api-keys
|
|
28
|
+
action: navigate:/
|
|
29
|
+
proofs:
|
|
30
|
+
- type: navigation
|
|
31
|
+
expects: screen:/
|
|
32
|
+
- type: dom
|
|
33
|
+
expects: "screen source: src/app/api-keys/page.tsx"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_manage-to-audits-176c1eb8
|
|
3
|
+
name: "Journey: flow:manage-to-audits-176c1eb8"
|
|
4
|
+
description: Generated plan for journey flow:manage-to-audits-176c1eb8 with actor user
|
|
5
|
+
driver: maestro
|
|
6
|
+
platform: web
|
|
7
|
+
target:
|
|
8
|
+
base_url: http://localhost:3020
|
|
9
|
+
flow: null
|
|
10
|
+
recovery:
|
|
11
|
+
enabled: false
|
|
12
|
+
max_attempts: 1
|
|
13
|
+
timeout_ms: 30000
|
|
14
|
+
journey_revision: 2
|
|
15
|
+
suites:
|
|
16
|
+
- id: default
|
|
17
|
+
runs: on_demand
|
|
18
|
+
journeys:
|
|
19
|
+
- id: flow:manage-to-audits-176c1eb8
|
|
20
|
+
actor: user
|
|
21
|
+
goal: "Complete journey: flow:manage-to-audits-176c1eb8"
|
|
22
|
+
capabilities_required: []
|
|
23
|
+
preconditions:
|
|
24
|
+
- Test tenant / sandbox is active
|
|
25
|
+
- Actor account exists
|
|
26
|
+
steps:
|
|
27
|
+
- node_id: screen:/manage
|
|
28
|
+
action: navigate:App Audit
|
|
29
|
+
proofs:
|
|
30
|
+
- type: navigation
|
|
31
|
+
expects: screen:/audits
|
|
32
|
+
- type: dom
|
|
33
|
+
expects: "screen source: runtime-verified"
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_manage-to-blockers-633282c8
|
|
3
|
+
name: "Journey: Open Manage → Open Blockers"
|
|
4
|
+
description: >
|
|
5
|
+
Executable plan for flow:manage-to-blockers-633282c8 (revision 1) derived from
|
|
6
|
+
grounded test case assumptions in flow-manage-to-blockers-633282c8.json.
|
|
7
|
+
Covers the resource management hub at /manage, sidebar Blockers navigation,
|
|
8
|
+
and the blockers catalog panels on /blockers.
|
|
9
|
+
driver: maestro
|
|
10
|
+
platform: web
|
|
11
|
+
target:
|
|
12
|
+
base_url: http://localhost:3020
|
|
13
|
+
flow: null
|
|
14
|
+
recovery:
|
|
15
|
+
enabled: false
|
|
16
|
+
max_attempts: 1
|
|
17
|
+
timeout_ms: 30000
|
|
18
|
+
journey_revision: 1
|
|
19
|
+
case_set_id: flow-manage-to-blockers-633282c8
|
|
20
|
+
suites:
|
|
21
|
+
- id: default
|
|
22
|
+
runs: on_demand
|
|
23
|
+
journeys:
|
|
24
|
+
- id: flow:manage-to-blockers-633282c8
|
|
25
|
+
actor: user
|
|
26
|
+
goal: "Open /manage hub and navigate to blockers via sidebar"
|
|
27
|
+
capabilities_required:
|
|
28
|
+
- auth.login
|
|
29
|
+
preconditions:
|
|
30
|
+
- Aegis-authenticated dashboard session is active (sign in through dashboard OAuth)
|
|
31
|
+
- Local QA dashboard is running at http://localhost:3020
|
|
32
|
+
- Actor user is defined in roles.yaml with project membership
|
|
33
|
+
- Project context bugmole is selected (?project=bugmole) for full blockers panel data
|
|
34
|
+
steps:
|
|
35
|
+
- node_id: screen:/manage
|
|
36
|
+
case_id: TC-MANAGE-ENTRANCE
|
|
37
|
+
action: navigate:/manage
|
|
38
|
+
proofs:
|
|
39
|
+
- type: dom
|
|
40
|
+
expects: "visible:.auth-eyebrow[text*='RESOURCE MANAGEMENT']"
|
|
41
|
+
- type: dom
|
|
42
|
+
expects: "visible:.auth-title[text='Manage Bugmole']"
|
|
43
|
+
- type: dom
|
|
44
|
+
expects: "visible:a.management-hub-card[href='/manage/workspaces']"
|
|
45
|
+
- type: dom
|
|
46
|
+
expects: "visible:a.management-hub-card[href='/manage/projects']"
|
|
47
|
+
- type: dom
|
|
48
|
+
expects: "visible:a.management-hub-card[href='/manage/apps']"
|
|
49
|
+
- type: dom
|
|
50
|
+
expects: "visible:a.management-hub-card[href='/manage/environments']"
|
|
51
|
+
- type: dom
|
|
52
|
+
expects: "visible:a.auth-back[href='/'][text*='Back to dashboard']"
|
|
53
|
+
- type: navigation
|
|
54
|
+
expects: screen:/manage
|
|
55
|
+
- node_id: screen:/manage
|
|
56
|
+
case_id: TC-MANAGE-NAV-BLOCKERS
|
|
57
|
+
edge_id: screen:/manage->screen:/blockers:dom-6
|
|
58
|
+
action: navigate:Blockers
|
|
59
|
+
proofs:
|
|
60
|
+
- type: navigation
|
|
61
|
+
expects: screen:/blockers
|
|
62
|
+
- type: dom
|
|
63
|
+
expects: "visible:nav a[href='/blockers'][aria-current='page']"
|
|
64
|
+
- type: dom
|
|
65
|
+
expects: "visible:h1[text='What is gating the graph.']"
|
|
66
|
+
- node_id: screen:/blockers
|
|
67
|
+
case_id: TC-BLOCKERS-GOAL
|
|
68
|
+
action: verify:blockers-panels
|
|
69
|
+
proofs:
|
|
70
|
+
- type: dom
|
|
71
|
+
expects: "visible:#blockers.panel"
|
|
72
|
+
- type: dom
|
|
73
|
+
expects: "visible:#blockers .eyebrow[text='Hard stops']"
|
|
74
|
+
- type: dom
|
|
75
|
+
expects: "visible:#blockers h2[text='The run ends here']"
|
|
76
|
+
- type: dom
|
|
77
|
+
expects: "visible:#blockers-documented.panel"
|
|
78
|
+
- type: dom
|
|
79
|
+
expects: "visible:#blockers-documented .eyebrow[text='Documented and continued']"
|
|
80
|
+
- type: dom
|
|
81
|
+
expects: "visible:#blockers-documented h2[text='Setup and data states']"
|
|
82
|
+
- type: dom
|
|
83
|
+
expects: "visible:#blockers .panel-foot[text*='spec/blockers.yaml']"
|
|
84
|
+
- type: dom
|
|
85
|
+
expects: "screen source: apps/qa/src/app/blockers/page.tsx section=blockers"
|
|
86
|
+
variants:
|
|
87
|
+
- id: unauthenticated_manage_redirect
|
|
88
|
+
case_id: TC-manage-auth-redirect
|
|
89
|
+
preconditions:
|
|
90
|
+
- Aegis session cookie is cleared or absent
|
|
91
|
+
steps:
|
|
92
|
+
- node_id: screen:/manage
|
|
93
|
+
action: navigate:/manage
|
|
94
|
+
proofs:
|
|
95
|
+
- type: navigation
|
|
96
|
+
expects: screen:/login
|
|
97
|
+
- type: dom
|
|
98
|
+
expects: "screen source: apps/qa/src/app/login/page.tsx"
|
|
99
|
+
- id: blockers_direct_load
|
|
100
|
+
case_id: TC-BLOCKERS-GOAL-direct
|
|
101
|
+
preconditions:
|
|
102
|
+
- Authenticated session active
|
|
103
|
+
steps:
|
|
104
|
+
- node_id: screen:/blockers
|
|
105
|
+
action: navigate:/blockers?project=bugmole
|
|
106
|
+
proofs:
|
|
107
|
+
- type: dom
|
|
108
|
+
expects: "visible:h1[text='What is gating the graph.']"
|
|
109
|
+
- type: dom
|
|
110
|
+
expects: "visible:#blockers"
|
|
111
|
+
- type: dom
|
|
112
|
+
expects: "visible:#blockers-documented"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_manage-to-devices-ad57e202
|
|
3
|
+
name: "Journey: flow:manage-to-devices-ad57e202"
|
|
4
|
+
description: Generated plan for journey flow:manage-to-devices-ad57e202 with actor user
|
|
5
|
+
driver: maestro
|
|
6
|
+
platform: web
|
|
7
|
+
target:
|
|
8
|
+
base_url: http://localhost:3020
|
|
9
|
+
flow: null
|
|
10
|
+
recovery:
|
|
11
|
+
enabled: false
|
|
12
|
+
max_attempts: 1
|
|
13
|
+
timeout_ms: 30000
|
|
14
|
+
journey_revision: 2
|
|
15
|
+
suites:
|
|
16
|
+
- id: default
|
|
17
|
+
runs: on_demand
|
|
18
|
+
journeys:
|
|
19
|
+
- id: flow:manage-to-devices-ad57e202
|
|
20
|
+
actor: user
|
|
21
|
+
goal: "Complete journey: flow:manage-to-devices-ad57e202"
|
|
22
|
+
capabilities_required: []
|
|
23
|
+
preconditions:
|
|
24
|
+
- Test tenant / sandbox is active
|
|
25
|
+
- Actor account exists
|
|
26
|
+
steps:
|
|
27
|
+
- node_id: screen:/manage
|
|
28
|
+
action: navigate:Devices
|
|
29
|
+
proofs:
|
|
30
|
+
- type: navigation
|
|
31
|
+
expects: screen:/devices
|
|
32
|
+
- type: dom
|
|
33
|
+
expects: "screen source: rendered-dom"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_manage-to-logout-86c54656
|
|
3
|
+
name: "Journey: flow:manage-to-logout-86c54656"
|
|
4
|
+
description: Generated plan for journey flow:manage-to-logout-86c54656 with actor user
|
|
5
|
+
driver: maestro
|
|
6
|
+
platform: web
|
|
7
|
+
target:
|
|
8
|
+
base_url: http://localhost:3020
|
|
9
|
+
flow: null
|
|
10
|
+
recovery:
|
|
11
|
+
enabled: false
|
|
12
|
+
max_attempts: 1
|
|
13
|
+
timeout_ms: 30000
|
|
14
|
+
journey_revision: 2
|
|
15
|
+
suites:
|
|
16
|
+
- id: default
|
|
17
|
+
runs: on_demand
|
|
18
|
+
journeys:
|
|
19
|
+
- id: flow:manage-to-logout-86c54656
|
|
20
|
+
actor: user
|
|
21
|
+
goal: "Complete journey: flow:manage-to-logout-86c54656"
|
|
22
|
+
capabilities_required: []
|
|
23
|
+
preconditions:
|
|
24
|
+
- Test tenant / sandbox is active
|
|
25
|
+
- Actor account exists
|
|
26
|
+
steps:
|
|
27
|
+
- node_id: screen:/manage
|
|
28
|
+
action: navigate:/logout
|
|
29
|
+
proofs:
|
|
30
|
+
- type: navigation
|
|
31
|
+
expects: screen:/logout
|
|
32
|
+
- type: dom
|
|
33
|
+
expects: "screen source: src/app/manage/page.tsx"
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_manage-to-manage-resource-action-6325f99a
|
|
3
|
+
name: "Journey: Open Manage → Open resource management"
|
|
4
|
+
description: >
|
|
5
|
+
Executable plan for flow:manage-to-manage-resource-action-6325f99a (revision 3) derived from
|
|
6
|
+
grounded test case assumptions in flow-manage-to-manage-resource-action-6325f99a.json.
|
|
7
|
+
Covers the resource management hub at /manage, hub-card navigation to workspaces/projects/apps/environments,
|
|
8
|
+
resource list screens, back-to-hub navigation, and unauthenticated redirect.
|
|
9
|
+
driver: maestro
|
|
10
|
+
platform: web
|
|
11
|
+
target:
|
|
12
|
+
base_url: http://localhost:3020
|
|
13
|
+
flow: null
|
|
14
|
+
recovery:
|
|
15
|
+
enabled: false
|
|
16
|
+
max_attempts: 1
|
|
17
|
+
timeout_ms: 30000
|
|
18
|
+
journey_revision: 3
|
|
19
|
+
case_set_id: flow-manage-to-manage-resource-action-6325f99a
|
|
20
|
+
suites:
|
|
21
|
+
- id: default
|
|
22
|
+
runs: on_demand
|
|
23
|
+
journeys:
|
|
24
|
+
- id: flow:manage-to-manage-resource-action-6325f99a
|
|
25
|
+
actor: user
|
|
26
|
+
goal: "Open /manage hub and navigate to resource management list pages"
|
|
27
|
+
capabilities_required:
|
|
28
|
+
- auth.login
|
|
29
|
+
preconditions:
|
|
30
|
+
- Aegis-authenticated dashboard session is active (sign in through dashboard OAuth)
|
|
31
|
+
- Local QA dashboard is running at http://localhost:3020
|
|
32
|
+
- Actor user is defined in roles.yaml with project membership
|
|
33
|
+
steps:
|
|
34
|
+
- node_id: screen:/manage
|
|
35
|
+
case_id: TC-manage-hub-renders
|
|
36
|
+
action: navigate:/manage
|
|
37
|
+
proofs:
|
|
38
|
+
- type: dom
|
|
39
|
+
expects: "visible:.auth-eyebrow[text*='RESOURCE MANAGEMENT']"
|
|
40
|
+
- type: dom
|
|
41
|
+
expects: "visible:.auth-title[text='Manage Bugmole']"
|
|
42
|
+
- type: dom
|
|
43
|
+
expects: "visible:a.management-hub-card[href='/manage/workspaces']"
|
|
44
|
+
- type: dom
|
|
45
|
+
expects: "visible:a.management-hub-card[href='/manage/projects']"
|
|
46
|
+
- type: dom
|
|
47
|
+
expects: "visible:a.management-hub-card[href='/manage/apps']"
|
|
48
|
+
- type: dom
|
|
49
|
+
expects: "visible:a.management-hub-card[href='/manage/environments']"
|
|
50
|
+
- type: dom
|
|
51
|
+
expects: "visible:.qa-header"
|
|
52
|
+
- type: navigation
|
|
53
|
+
expects: screen:/manage
|
|
54
|
+
- node_id: screen:/manage
|
|
55
|
+
case_id: TC-manage-workspaces-nav
|
|
56
|
+
edge_id: screen:/manage->screen:/manage/:resource/:[...action]:1
|
|
57
|
+
action: navigate:/manage/workspaces
|
|
58
|
+
proofs:
|
|
59
|
+
- type: navigation
|
|
60
|
+
expects: screen:/manage/:resource/:[...action]
|
|
61
|
+
- type: dom
|
|
62
|
+
expects: "visible:.auth-eyebrow[text='WORKSPACES']"
|
|
63
|
+
- type: dom
|
|
64
|
+
expects: "visible:a.auth-back[href='/manage'][text*='Resource management']"
|
|
65
|
+
- type: network
|
|
66
|
+
expects: "GET /manage/workspaces → 200"
|
|
67
|
+
- node_id: screen:/manage/:resource/:[...action]
|
|
68
|
+
case_id: TC-resource-workspaces-list
|
|
69
|
+
action: verify:workspaces-list
|
|
70
|
+
proofs:
|
|
71
|
+
- type: dom
|
|
72
|
+
expects: "visible:.management-table-header"
|
|
73
|
+
- type: dom
|
|
74
|
+
expects: "visible:a.auth-button[href='/manage/workspaces/new']"
|
|
75
|
+
- type: network
|
|
76
|
+
expects: "GET /api/workspaces → 200"
|
|
77
|
+
- node_id: screen:/manage/:resource/:[...action]
|
|
78
|
+
case_id: TC-resource-back-to-hub
|
|
79
|
+
action: navigate:/manage
|
|
80
|
+
proofs:
|
|
81
|
+
- type: navigation
|
|
82
|
+
expects: screen:/manage
|
|
83
|
+
- type: dom
|
|
84
|
+
expects: "visible:.auth-title[text='Manage Bugmole']"
|
|
85
|
+
variants:
|
|
86
|
+
- id: projects_hub_nav
|
|
87
|
+
case_id: TC-manage-projects-nav
|
|
88
|
+
preconditions:
|
|
89
|
+
- Authenticated session active
|
|
90
|
+
steps:
|
|
91
|
+
- node_id: screen:/manage
|
|
92
|
+
action: navigate:/manage/projects
|
|
93
|
+
proofs:
|
|
94
|
+
- type: navigation
|
|
95
|
+
expects: screen:/manage/:resource/:[...action]
|
|
96
|
+
- type: dom
|
|
97
|
+
expects: "visible:.auth-eyebrow[text='PROJECTS']"
|
|
98
|
+
- type: dom
|
|
99
|
+
expects: "visible:label.auth-label:has-text('Workspace')"
|
|
100
|
+
- type: network
|
|
101
|
+
expects: "GET /manage/projects → 200"
|
|
102
|
+
- node_id: screen:/manage/:resource/:[...action]
|
|
103
|
+
case_id: TC-resource-projects-list
|
|
104
|
+
action: verify:projects-list
|
|
105
|
+
proofs:
|
|
106
|
+
- type: dom
|
|
107
|
+
expects: "visible:.management-table-header"
|
|
108
|
+
- type: network
|
|
109
|
+
expects: "GET /api/projects → 200"
|
|
110
|
+
- id: apps_hub_nav
|
|
111
|
+
case_id: TC-manage-apps-nav
|
|
112
|
+
preconditions:
|
|
113
|
+
- Authenticated session active
|
|
114
|
+
- Project context bugmole selected (?project=bugmole)
|
|
115
|
+
steps:
|
|
116
|
+
- node_id: screen:/manage
|
|
117
|
+
action: navigate:/manage/apps
|
|
118
|
+
proofs:
|
|
119
|
+
- type: navigation
|
|
120
|
+
expects: screen:/manage/:resource/:[...action]
|
|
121
|
+
- type: dom
|
|
122
|
+
expects: "visible:.auth-eyebrow[text='APPS']"
|
|
123
|
+
- type: dom
|
|
124
|
+
expects: "visible:label.auth-label:has-text('Project')"
|
|
125
|
+
- type: network
|
|
126
|
+
expects: "GET /manage/apps → 200"
|
|
127
|
+
- node_id: screen:/manage/:resource/:[...action]
|
|
128
|
+
case_id: TC-resource-apps-list
|
|
129
|
+
action: verify:apps-list
|
|
130
|
+
proofs:
|
|
131
|
+
- type: dom
|
|
132
|
+
expects: "visible:.management-table-header"
|
|
133
|
+
- type: dom
|
|
134
|
+
expects: "visible:a.table-action[href*='/manage/apps/'][href*='/edit']"
|
|
135
|
+
- id: environments_hub_nav
|
|
136
|
+
case_id: TC-manage-environments-nav
|
|
137
|
+
preconditions:
|
|
138
|
+
- Authenticated session active
|
|
139
|
+
- Project context bugmole selected (?project=bugmole)
|
|
140
|
+
steps:
|
|
141
|
+
- node_id: screen:/manage
|
|
142
|
+
action: navigate:/manage/environments
|
|
143
|
+
proofs:
|
|
144
|
+
- type: navigation
|
|
145
|
+
expects: screen:/manage/:resource/:[...action]
|
|
146
|
+
- type: dom
|
|
147
|
+
expects: "visible:.auth-eyebrow[text='ENVIRONMENTS']"
|
|
148
|
+
- type: dom
|
|
149
|
+
expects: "visible:label.auth-label:has-text('Project')"
|
|
150
|
+
- type: network
|
|
151
|
+
expects: "GET /manage/environments → 200"
|
|
152
|
+
- node_id: screen:/manage/:resource/:[...action]
|
|
153
|
+
case_id: TC-resource-environments-list
|
|
154
|
+
action: verify:environments-list
|
|
155
|
+
proofs:
|
|
156
|
+
- type: dom
|
|
157
|
+
expects: "visible:.management-table-header"
|
|
158
|
+
- type: dom
|
|
159
|
+
expects: "visible:a.table-action[href*='/manage/environments/'][href*='/edit']"
|
|
160
|
+
- id: unauthenticated_manage_redirect
|
|
161
|
+
case_id: TC-manage-auth-gate
|
|
162
|
+
preconditions:
|
|
163
|
+
- Aegis session cookie is cleared or absent
|
|
164
|
+
steps:
|
|
165
|
+
- node_id: screen:/manage
|
|
166
|
+
action: navigate:/manage
|
|
167
|
+
proofs:
|
|
168
|
+
- type: navigation
|
|
169
|
+
expects: screen:/login
|
|
170
|
+
- type: dom
|
|
171
|
+
expects: "screen source: apps/qa/src/app/login/page.tsx"
|
|
172
|
+
- id: create_workspace_form
|
|
173
|
+
case_id: TC-resource-create-nav
|
|
174
|
+
preconditions:
|
|
175
|
+
- Authenticated session active
|
|
176
|
+
steps:
|
|
177
|
+
- node_id: screen:/manage/:resource/:[...action]
|
|
178
|
+
action: navigate:/manage/workspaces/new
|
|
179
|
+
proofs:
|
|
180
|
+
- type: navigation
|
|
181
|
+
expects: screen:/manage/:resource/:[...action]
|
|
182
|
+
- type: dom
|
|
183
|
+
expects: "visible:h2[text*='Create workspace']"
|
|
184
|
+
- type: dom
|
|
185
|
+
expects: "visible:input[placeholder*='Workspace ID'], label:has-text('Workspace ID')"
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
id: flow_manage-to-parity-issues-01fa2579
|
|
3
|
+
name: "Journey: flow:manage-to-parity-issues-01fa2579"
|
|
4
|
+
description: Generated plan for journey flow:manage-to-parity-issues-01fa2579
|
|
5
|
+
with actor user
|
|
6
|
+
driver: maestro
|
|
7
|
+
platform: web
|
|
8
|
+
target:
|
|
9
|
+
base_url: http://localhost:3020
|
|
10
|
+
flow: null
|
|
11
|
+
recovery:
|
|
12
|
+
enabled: false
|
|
13
|
+
max_attempts: 1
|
|
14
|
+
timeout_ms: 30000
|
|
15
|
+
journey_revision: 2
|
|
16
|
+
suites:
|
|
17
|
+
- id: default
|
|
18
|
+
runs: on_demand
|
|
19
|
+
journeys:
|
|
20
|
+
- id: flow:manage-to-parity-issues-01fa2579
|
|
21
|
+
actor: user
|
|
22
|
+
goal: "Complete journey: flow:manage-to-parity-issues-01fa2579"
|
|
23
|
+
capabilities_required: []
|
|
24
|
+
preconditions:
|
|
25
|
+
- Test tenant / sandbox is active
|
|
26
|
+
- Actor account exists
|
|
27
|
+
steps:
|
|
28
|
+
- node_id: screen:/manage
|
|
29
|
+
action: navigate:Parity bugs
|
|
30
|
+
proofs:
|
|
31
|
+
- type: navigation
|
|
32
|
+
expects: screen:/parity/issues
|
|
33
|
+
- type: dom
|
|
34
|
+
expects: "screen source: runtime-verified"
|