@sun-asterisk/sungen 3.2.0-beta.142 → 3.2.0-beta.143
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/dist/capabilities/context-router.d.ts +11 -2
- package/dist/capabilities/context-router.d.ts.map +1 -1
- package/dist/capabilities/context-router.js +10 -3
- package/dist/capabilities/context-router.js.map +1 -1
- package/dist/capabilities/discover.js +1 -1
- package/dist/capabilities/discover.js.map +1 -1
- package/dist/generators/test-generator/adapters/appium/appium-adapter.d.ts +54 -0
- package/dist/generators/test-generator/adapters/appium/appium-adapter.d.ts.map +1 -0
- package/dist/generators/test-generator/adapters/appium/appium-adapter.js +52 -0
- package/dist/generators/test-generator/adapters/appium/appium-adapter.js.map +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/after-all.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/after-each.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/before-all.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/before-each.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/imports.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/scenario.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/alert-accept-action.hbs +4 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/alert-dismiss-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/alert-fill-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/check-action.hbs +10 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/clear-action.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/click-action.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/click-element-with-text.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/click-select-action.hbs +4 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/dismiss-action.hbs +3 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/double-click-action.hbs +6 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/drag-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/expand-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/fill-action.hbs +14 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/fill-editor-action.hbs +12 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/frame-enter-action.hbs +6 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/frame-exit-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/hide-keyboard-action.hbs +4 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/hover-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/keyboard-global-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/press-action.hbs +4 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/radio-select-action.hbs +4 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/scroll-action.hbs +19 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/select-action.hbs +5 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/table-action-in-row.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/toggle-action.hbs +3 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/uncheck-action.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/unknown-element-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/upload-action.hbs +3 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/wait-for-page.hbs +3 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/wait-for-role-with-data.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/actions/wait-for-role.hbs +3 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/alert-text-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/attribute-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/checked-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/clipboard-text-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/column-cell-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/contain-text-assertion.hbs +14 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/count-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/disabled-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/empty-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/enabled-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/focused-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/have-text-assertion.hbs +15 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/have-value-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/is-hidden-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/label-value-assertion.hbs +12 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/list-item-count-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/loading-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/not-checked-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/page-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/route-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/selected-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/sorted-assertion.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/table-column-exists.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/table-empty.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/table-match-data.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-count.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-exists.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-not-exists.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/assertions/visible-assertion.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/background-action.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/grant-permission-action.hbs +11 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/long-press-action.hbs +5 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/open-notifications-action.hbs +3 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/pinch-zoom-action.hbs +5 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/pull-to-refresh-action.hbs +5 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/rotate-action.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/set-clipboard-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/set-geolocation-action.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/swipe-action.hbs +5 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/gestures/tap-top-action.hbs +24 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/navigation/navigation.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/navigation/wait-for-element-with-text.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/navigation/wait-for-element.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/navigation/wait-timeout.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/partials/appium-selector-expr.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/partials/appium-selector.hbs +15 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/partials/locator.hbs +8 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/setup/application-running.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/setup/clear-auth.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/setup/clear-browser-state.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/setup/clear-database.hbs +1 -0
- package/dist/generators/test-generator/adapters/appium/templates/steps/setup/user-login-todo.hbs +2 -0
- package/dist/generators/test-generator/adapters/appium/templates/test-file.hbs +226 -0
- package/dist/generators/test-generator/adapters/index.d.ts +1 -0
- package/dist/generators/test-generator/adapters/index.d.ts.map +1 -1
- package/dist/generators/test-generator/adapters/index.js +9 -1
- package/dist/generators/test-generator/adapters/index.js.map +1 -1
- package/dist/generators/test-generator/step-mapper.d.ts +1 -0
- package/dist/generators/test-generator/step-mapper.d.ts.map +1 -1
- package/dist/generators/test-generator/step-mapper.js +7 -37
- package/dist/generators/test-generator/step-mapper.js.map +1 -1
- package/dist/generators/test-generator/template-engine.d.ts.map +1 -1
- package/dist/generators/test-generator/template-engine.js +13 -1
- package/dist/generators/test-generator/template-engine.js.map +1 -1
- package/dist/harness/audit.d.ts +1 -1
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +14 -4
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/catalog/drivers.yaml +1 -1
- package/dist/orchestrator/ai-rules-updater.d.ts.map +1 -1
- package/dist/orchestrator/ai-rules-updater.js +8 -0
- package/dist/orchestrator/ai-rules-updater.js.map +1 -1
- package/dist/orchestrator/templates/ai-instructions/claude-skill-capture-mobile.md +184 -0
- package/dist/orchestrator/templates/ai-instructions/claude-skill-mobile-gestures.md +109 -0
- package/dist/orchestrator/templates/ai-instructions/claude-skill-selector-fix-mobile.md +316 -0
- package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-capture-mobile.md +184 -0
- package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-mobile-gestures.md +109 -0
- package/dist/orchestrator/templates/ai-instructions/github-skill-sungen-selector-fix-mobile.md +316 -0
- package/dist/orchestrator/templates/env.appium.example +25 -0
- package/dist/orchestrator/templates/specs-pw-shape-reporter.ts +92 -0
- package/dist/orchestrator/templates/wdio.conf.ts +295 -0
- package/dist/utils/selector-types.d.ts +1 -1
- package/dist/utils/selector-types.d.ts.map +1 -1
- package/dist/utils/selector-types.js +5 -0
- package/dist/utils/selector-types.js.map +1 -1
- package/package.json +3 -3
- package/src/capabilities/context-router.ts +15 -3
- package/src/capabilities/discover.ts +1 -1
- package/src/generators/test-generator/adapters/appium/appium-adapter.ts +57 -0
- package/src/generators/test-generator/adapters/appium/templates/after-all.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/after-each.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/before-all.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/before-each.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/imports.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/scenario.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/alert-accept-action.hbs +4 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/alert-dismiss-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/alert-fill-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/check-action.hbs +10 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/clear-action.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/click-action.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/click-element-with-text.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/click-select-action.hbs +4 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/dismiss-action.hbs +3 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/double-click-action.hbs +6 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/drag-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/expand-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/fill-action.hbs +14 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/fill-editor-action.hbs +12 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/frame-enter-action.hbs +6 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/frame-exit-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/hide-keyboard-action.hbs +4 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/hover-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/keyboard-global-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/press-action.hbs +4 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/radio-select-action.hbs +4 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/scroll-action.hbs +19 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/select-action.hbs +5 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/table-action-in-row.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/toggle-action.hbs +3 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/uncheck-action.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/unknown-element-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/upload-action.hbs +3 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/wait-for-page.hbs +3 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/wait-for-role-with-data.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/actions/wait-for-role.hbs +3 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/alert-text-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/attribute-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/checked-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/clipboard-text-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/column-cell-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/contain-text-assertion.hbs +14 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/count-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/disabled-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/empty-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/enabled-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/focused-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/have-text-assertion.hbs +15 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/have-value-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/is-hidden-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/label-value-assertion.hbs +12 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/list-item-count-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/loading-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/not-checked-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/page-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/route-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/selected-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/sorted-assertion.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-column-exists.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-empty.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-match-data.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-count.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-exists.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-not-exists.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/assertions/visible-assertion.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/background-action.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/grant-permission-action.hbs +11 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/long-press-action.hbs +5 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/open-notifications-action.hbs +3 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/pinch-zoom-action.hbs +5 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/pull-to-refresh-action.hbs +5 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/rotate-action.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/set-clipboard-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/set-geolocation-action.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/swipe-action.hbs +5 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/gestures/tap-top-action.hbs +24 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/navigation/navigation.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/navigation/wait-for-element-with-text.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/navigation/wait-for-element.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/navigation/wait-timeout.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/partials/appium-selector-expr.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/partials/appium-selector.hbs +15 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/partials/locator.hbs +8 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/setup/application-running.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/setup/clear-auth.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/setup/clear-browser-state.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/setup/clear-database.hbs +1 -0
- package/src/generators/test-generator/adapters/appium/templates/steps/setup/user-login-todo.hbs +2 -0
- package/src/generators/test-generator/adapters/appium/templates/test-file.hbs +226 -0
- package/src/generators/test-generator/adapters/index.ts +7 -0
- package/src/generators/test-generator/step-mapper.ts +8 -5
- package/src/generators/test-generator/template-engine.ts +13 -1
- package/src/harness/audit.ts +12 -4
- package/src/harness/catalog/drivers.yaml +1 -1
- package/src/orchestrator/ai-rules-updater.ts +8 -0
- package/src/orchestrator/templates/ai-instructions/claude-skill-capture-mobile.md +184 -0
- package/src/orchestrator/templates/ai-instructions/claude-skill-mobile-gestures.md +109 -0
- package/src/orchestrator/templates/ai-instructions/claude-skill-selector-fix-mobile.md +316 -0
- package/src/orchestrator/templates/ai-instructions/github-skill-sungen-capture-mobile.md +184 -0
- package/src/orchestrator/templates/ai-instructions/github-skill-sungen-mobile-gestures.md +109 -0
- package/src/orchestrator/templates/ai-instructions/github-skill-sungen-selector-fix-mobile.md +316 -0
- package/src/orchestrator/templates/env.appium.example +25 -0
- package/src/orchestrator/templates/specs-pw-shape-reporter.ts +92 -0
- package/src/orchestrator/templates/wdio.conf.ts +295 -0
- package/src/utils/selector-types.ts +5 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// Hide the soft keyboard (best-effort — never fails if no keyboard is shown).
|
|
2
|
+
// iOS XCUITest cannot dismiss the keyboard generically (WDA throws + retries, ~12s wasted),
|
|
3
|
+
// and XCUITest taps/asserts work with the keyboard up — so the dismiss is Android-only.
|
|
4
|
+
try { if (!driver.isIOS && await driver.isKeyboardShown()) await driver.hideKeyboard(); } catch { /* no keyboard / not supported */ }
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{{!-- Mobile radios have no ARIA "radio" role to query by name, so tap the option by its
|
|
2
|
+
accessibility-id / content-desc (= the option value). If the visible label differs from the
|
|
3
|
+
element's accessibility-id, add an explicit selector for the option and reference it instead. --}}
|
|
4
|
+
await $('~{{escapeQuotes selectValue}}').click();
|
package/src/generators/test-generator/adapters/appium/templates/steps/actions/scroll-action.hbs
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
if (driver.isIOS) {
|
|
2
|
+
// iOS (XCUITest) has no UiScrollable. Swipe the screen up in bounded steps until the target is on
|
|
3
|
+
// screen (a below-fold element isn't in the XCUITest tree until scrolled, so getElementRect/tap on
|
|
4
|
+
// it would otherwise fail). Bounded so a missing target can't loop forever.
|
|
5
|
+
const __t = $({{> appium-selector-expr}});
|
|
6
|
+
for (let __i = 0; __i < 12 && !(await __t.isDisplayed().catch(() => false)); __i++) {
|
|
7
|
+
await driver.execute('mobile: swipe', { direction: 'up' });
|
|
8
|
+
}
|
|
9
|
+
} else {
|
|
10
|
+
{{#if (eq strategy 'accessibility-id')}}
|
|
11
|
+
// Android UiScrollable scrolls until the target's content-desc is on screen, then stops — no
|
|
12
|
+
// overshoot (which would drop a virtualized Flutter item from the a11y tree). Robust on Flutter/RN.
|
|
13
|
+
await $('android=new UiScrollable(new UiSelector().scrollable(true)).scrollIntoView(new UiSelector().descriptionContains("{{escapeQuotes value}}"))');
|
|
14
|
+
{{else}}
|
|
15
|
+
// Generic fallback: framework-agnostic moderate scroll gesture (wdio .scrollIntoView() can't always
|
|
16
|
+
// find a native ScrollView on Flutter/RN). Modest percent avoids over-scrolling a virtualized list.
|
|
17
|
+
await driver.execute('mobile: scrollGesture', { left: 60, top: 420, width: 960, height: 1320, direction: 'down', percent: 0.6 });
|
|
18
|
+
{{/if}}
|
|
19
|
+
}
|
package/src/generators/test-generator/adapters/appium/templates/steps/actions/select-action.hbs
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
{{!-- Native dropdown/picker: open the control, then tap the option by accessibility-id /
|
|
2
|
+
content-desc (= the option value). Two taps because there is no native <select>.selectOption
|
|
3
|
+
on mobile. If the option's accessibility-id differs from its label, add an explicit selector. --}}
|
|
4
|
+
await {{> locator}}.click();
|
|
5
|
+
await $('~{{escapeQuotes selectValue}}').click();
|
package/src/generators/test-generator/adapters/appium/templates/steps/actions/uncheck-action.hbs
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{{!-- WebdriverIO/Appium has no .uncheck(). Tap only if currently on, so the step is idempotent. --}}
|
|
2
|
+
{
|
|
3
|
+
const __cb = await {{> locator}};
|
|
4
|
+
let __on = false;
|
|
5
|
+
try { __on = await __cb.isSelected(); }
|
|
6
|
+
catch { try { __on = (await __cb.getAttribute('checked')) === 'true'; } catch { /* state unreadable — leave as-is */ } }
|
|
7
|
+
if (__on) await __cb.click();
|
|
8
|
+
}
|
package/src/generators/test-generator/adapters/appium/templates/steps/actions/upload-action.hbs
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
{{!-- File upload is not auto-generatable on native mobile (no <input type=file>): it needs app-specific
|
|
2
|
+
handling (driver.pushFile + the app's own picker, or a deep link). Fail loud so it isn't a silent skip. --}}
|
|
3
|
+
throw new Error("[sungen] upload step ('{{fileName}}') is not supported on the appium adapter — handle the file picker app-specifically (driver.pushFile + picker) or tag this scenario @manual.");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toHaveAttribute('{{attribute}}', '{{escapeQuotes dataValue}}');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toBeSelected();
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{{!-- Partial-text assertion (mobile): same multi-source read as have-text-assertion
|
|
2
|
+
(@text / @content-desc on Android, label/value on iOS), substring match. --}}
|
|
3
|
+
{
|
|
4
|
+
const __el = await {{> locator}};
|
|
5
|
+
await __el.waitForDisplayed();
|
|
6
|
+
const __expected = String('{{escapeQuotes expectedText}}').trim();
|
|
7
|
+
const __sources = driver.isIOS
|
|
8
|
+
? [await __el.getAttribute('label'), await __el.getAttribute('value')]
|
|
9
|
+
: [await __el.getText(), await __el.getAttribute('content-desc')];
|
|
10
|
+
const __actual = String(__sources.find(s => s && String(s).trim() !== '') ?? '').trim();
|
|
11
|
+
if (!__actual.includes(__expected)) {
|
|
12
|
+
throw new Error(`[sungen] Expected text containing "${__expected}" but element reads "${__actual}"`);
|
|
13
|
+
}
|
|
14
|
+
}
|
package/src/generators/test-generator/adapters/appium/templates/steps/assertions/count-assertion.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect($$('{{> appium-selector}}')).toBeElementsArrayOfSize({{expectedCount}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).not.toBeEnabled();
|
package/src/generators/test-generator/adapters/appium/templates/steps/assertions/empty-assertion.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toHaveText('');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toBeEnabled();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toBeFocused();
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{{!-- Text assertion (mobile): native trees scatter text across @text (Android RN/native),
|
|
2
|
+
@content-desc (Android Flutter Semantics) and label/value (iOS). Read the first
|
|
3
|
+
non-empty source and compare exactly (trimmed). --}}
|
|
4
|
+
{
|
|
5
|
+
const __el = await {{> locator}};
|
|
6
|
+
await __el.waitForDisplayed();
|
|
7
|
+
const __expected = String('{{escapeQuotes expectedText}}').trim();
|
|
8
|
+
const __sources = driver.isIOS
|
|
9
|
+
? [await __el.getAttribute('label'), await __el.getAttribute('value')]
|
|
10
|
+
: [await __el.getText(), await __el.getAttribute('content-desc')];
|
|
11
|
+
const __actual = String(__sources.find(s => s && String(s).trim() !== '') ?? '').trim();
|
|
12
|
+
if (__actual !== __expected) {
|
|
13
|
+
throw new Error(`[sungen] Expected text "${__expected}" but element reads "${__actual}"`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toHaveValue('{{escapeQuotes dataValue}}');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).not.toBeDisplayed();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{{!-- Label-value assertion (mobile): locate a visible text node carrying the value.
|
|
2
|
+
Android renders text into @text; iOS (RN/Flutter) into @label/@value. The web variant
|
|
3
|
+
matches "label: value" as one string — native trees keep label and value as separate
|
|
4
|
+
nodes, so only the value is matched here. The expected value must stay a standalone
|
|
5
|
+
quoted literal so the runtime-data transform can swap it for testData.get(...). --}}
|
|
6
|
+
{
|
|
7
|
+
const __expected = String('{{escapeQuotes dataValue}}').trim();
|
|
8
|
+
const __sel = driver.isIOS
|
|
9
|
+
? `-ios predicate string:label == "${__expected}" OR value == "${__expected}"`
|
|
10
|
+
: `android=new UiSelector().text("${__expected}")`;
|
|
11
|
+
await expect($(__sel)).toBeDisplayed();
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).not.toBeSelected();
|
package/src/generators/test-generator/adapters/appium/templates/steps/assertions/page-assertion.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// page/URL assertion is not applicable on mobile (no URL) — [{{value}}]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toBeSelected();
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-empty.hbs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
package/src/generators/test-generator/adapters/appium/templates/steps/assertions/table-row-count.hbs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{!-- Table/column steps target HTML <table> ARIA roles — not available on native mobile. --}}
|
|
2
|
+
throw new Error("[sungen] table/column steps target HTML table roles and are not supported on the appium adapter. Use list / accessibility-id assertions, or tag this scenario @manual.");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await expect({{> locator}}).toBeDisplayed();
|
package/src/generators/test-generator/adapters/appium/templates/steps/gestures/background-action.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await driver.background({{seconds}});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{{!-- Grant a runtime permission to the app under test so an OS dialog can't block the flow.
|
|
2
|
+
Android: `mobile: changePermissions` (appPackage read from the running session — multi-app safe).
|
|
3
|
+
iOS (Simulator only): `mobile: setPermission` with the bundle id from the active app.
|
|
4
|
+
iOS PREREQUISITE: the `applesimutils` binary (`brew tap wix/brew && brew install applesimutils`)
|
|
5
|
+
— without it the driver fails loud with that exact install hint. --}}
|
|
6
|
+
if (driver.isIOS) {
|
|
7
|
+
const __app = (await driver.execute('mobile: activeAppInfo')) as { bundleId?: string };
|
|
8
|
+
await driver.execute('mobile: setPermission', { bundleId: __app?.bundleId, access: { '{{iosService}}': 'yes' } });
|
|
9
|
+
} else {
|
|
10
|
+
await driver.execute('mobile: changePermissions', { action: 'grant', appPackage: await driver.getCurrentPackage(), permissions: ['{{permission}}'] });
|
|
11
|
+
}
|
package/src/generators/test-generator/adapters/appium/templates/steps/gestures/long-press-action.hbs
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
await (async () => { const e = await {{> locator}};
|
|
2
|
+
// XCUITest `mobile: touchAndHold` takes SECONDS; UiAutomator2 `mobile: longClickGesture` takes ms.
|
|
3
|
+
if (driver.isIOS) { await driver.execute('mobile: touchAndHold', { elementId: e.elementId, duration: {{durationMs}} / 1000 }); }
|
|
4
|
+
else { await driver.execute('mobile: longClickGesture', { elementId: e.elementId, duration: {{durationMs}} }); }
|
|
5
|
+
})();
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Android-only: XCUITest has no notification-shade automation — fail loud instead of a silent no-op.
|
|
2
|
+
if (driver.isIOS) { throw new Error('[sungen] "open notifications" is Android-only (no XCUITest equivalent) — keep this scenario @platform:android.'); }
|
|
3
|
+
await driver.openNotifications();
|
package/src/generators/test-generator/adapters/appium/templates/steps/gestures/pinch-zoom-action.hbs
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
await (async () => { const e = await {{> locator}};
|
|
2
|
+
// XCUITest `mobile: pinch`: scale >1 zooms in, <1 zooms out (velocity sign must match).
|
|
3
|
+
if (driver.isIOS) { await driver.execute('mobile: pinch', { elementId: e.elementId, scale: {{#if zoomOut}}0.5{{else}}2{{/if}}, velocity: {{#if zoomOut}}-1{{else}}1{{/if}} }); }
|
|
4
|
+
else { await driver.execute('mobile: {{#if zoomOut}}pinchCloseGesture{{else}}pinchOpenGesture{{/if}}', { elementId: e.elementId, percent: 0.75 }); }
|
|
5
|
+
})();
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
await (async () => { const e = await {{> locator}};
|
|
2
|
+
// Pull-to-refresh = drag the content down. Platform-native swipe per OS.
|
|
3
|
+
if (driver.isIOS) { await driver.execute('mobile: swipe', { elementId: e.elementId, direction: 'down' }); }
|
|
4
|
+
else { await driver.execute('mobile: swipeGesture', { elementId: e.elementId, direction: 'down', percent: 0.9, speed: 5000 }); }
|
|
5
|
+
})();
|
package/src/generators/test-generator/adapters/appium/templates/steps/gestures/rotate-action.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await driver.setOrientation('{{orientation}}');
|
package/src/generators/test-generator/adapters/appium/templates/steps/gestures/swipe-action.hbs
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
await (async () => { const e = await {{> locator}};
|
|
2
|
+
// Platform-native swipe: XCUITest `mobile: swipe` (direction only) vs UiAutomator2 `mobile: swipeGesture`.
|
|
3
|
+
if (driver.isIOS) { await driver.execute('mobile: swipe', { elementId: e.elementId, direction: '{{direction}}' }); }
|
|
4
|
+
else { await driver.execute('mobile: swipeGesture', { elementId: e.elementId, direction: '{{direction}}', percent: 0.75 }); }
|
|
5
|
+
})();
|
package/src/generators/test-generator/adapters/appium/templates/steps/gestures/tap-top-action.hbs
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
await (async () => {
|
|
2
|
+
const e = await {{> locator}};
|
|
3
|
+
// Visible-point tap: tap near the TOP of the element (its centre may sit under a floating bottom
|
|
4
|
+
// bar). getElementRect is W3C-standard → works on BOTH Android and iOS (the old `bounds` attribute
|
|
5
|
+
// is Android-only and throws on iOS).
|
|
6
|
+
const r = await driver.getElementRect(e.elementId);
|
|
7
|
+
if (r && r.width) {
|
|
8
|
+
if (driver.isIOS) {
|
|
9
|
+
// iOS: tap near the TOP-LEFT. On shorter iOS viewports a bottom-row card peeks only a few pt
|
|
10
|
+
// above the floating bottom nav, and the nav's raised centre FAB occludes the top-CENTRE sliver
|
|
11
|
+
// — verified live on the converter: top-centre (+40pt) hit the nav/FAB, top-left (+~10pt,
|
|
12
|
+
// x inset 20%) opened the tool. Top-left is still inside the element for fully-visible ones.
|
|
13
|
+
const x = Math.round(r.x + Math.max(8, r.width * 0.2));
|
|
14
|
+
const y = Math.round(r.y + Math.min(10, r.height / 3));
|
|
15
|
+
await driver.execute('mobile: tap', { x, y });
|
|
16
|
+
} else {
|
|
17
|
+
const x = Math.round(r.x + r.width / 2);
|
|
18
|
+
const y = Math.round(r.y + Math.min(40, r.height / 3));
|
|
19
|
+
await driver.execute('mobile: clickGesture', { x, y });
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
await e.click();
|
|
23
|
+
}
|
|
24
|
+
})();
|
package/src/generators/test-generator/adapters/appium/templates/steps/navigation/navigation.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// App launched via wdio capabilities{{#if path}} — entry: {{path}}{{/if}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{#if (eq state 'hidden')}}await $('//*[contains(@content-desc,"{{escapeQuotes dataValue}}") or contains(@text,"{{escapeQuotes dataValue}}")]').waitForDisplayed({ reverse: true });{{else}}await $('//*[contains(@content-desc,"{{escapeQuotes dataValue}}") or contains(@text,"{{escapeQuotes dataValue}}")]').waitForDisplayed();{{/if}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{#if (eq state 'hidden')}}await {{> locator}}.waitForDisplayed({ reverse: true });{{else}}await {{> locator}}.waitForDisplayed();{{/if}}
|
package/src/generators/test-generator/adapters/appium/templates/steps/navigation/wait-timeout.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
await driver.pause({{duration}});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{{~!--
|
|
2
|
+
Emits a JS expression for a WDIO selector argument (note: it INCLUDES the surrounding quotes,
|
|
3
|
+
unlike appium-selector which emits the raw string). Two forms:
|
|
4
|
+
- per-platform variant (androidSelector/iosSelector set): a runtime ternary so one @platform:mobile
|
|
5
|
+
spec resolves the right native selector per OS — `(driver.isIOS ? '<ios>' : '<android>')`.
|
|
6
|
+
- normal: a single quoted literal — `'<selector>'`.
|
|
7
|
+
--~}}
|
|
8
|
+
{{~#if androidSelector~}}(driver.isIOS ? '{{> appium-selector iosSelector}}' : '{{> appium-selector androidSelector}}'){{~else~}}'{{> appium-selector}}'{{~/if~}}
|
package/src/generators/test-generator/adapters/appium/templates/steps/partials/appium-selector.hbs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{{~#switch strategy~}}
|
|
2
|
+
{{~#case 'accessibility-id'}}~{{escapeQuotes value}}{{/case~}}
|
|
3
|
+
{{~#case 'testid'}}~{{escapeQuotes value}}{{/case~}}
|
|
4
|
+
{{~#case 'text'}}~{{escapeQuotes value}}{{/case~}}
|
|
5
|
+
{{~#case 'label'}}~{{escapeQuotes value}}{{/case~}}
|
|
6
|
+
{{~#case 'placeholder'}}~{{escapeQuotes value}}{{/case~}}
|
|
7
|
+
{{~#case 'role'}}~{{#if name}}{{escapeQuotes name}}{{else}}{{escapeQuotes value}}{{/if}}{{/case~}}
|
|
8
|
+
{{~#case 'xpath'}}{{escapeQuotes value}}{{/case~}}
|
|
9
|
+
{{~#case 'android-uiautomator'}}android={{escapeQuotes value}}{{/case~}}
|
|
10
|
+
{{~#case 'ios-predicate'}}-ios predicate string:{{escapeQuotes value}}{{/case~}}
|
|
11
|
+
{{~#case 'id'}}id={{escapeQuotes value}}{{/case~}}
|
|
12
|
+
{{~#case 'locator'}}{{escapeQuotes value}}{{/case~}}
|
|
13
|
+
{{~#case 'css'}}{{escapeQuotes value}}{{/case~}}
|
|
14
|
+
{{~#default}}~{{escapeQuotes value}}{{/default~}}
|
|
15
|
+
{{~/switch~}}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{{!-- Parent scoping (mobile): when a step says `[Child] type in [Parent] parentType`, parentLocator
|
|
2
|
+
is the parent rendered as an Appium element ($('~parent')); we chain the child under it so WDIO
|
|
3
|
+
searches from the parent context (findElementFromElement). `scope` (a parent content-desc from
|
|
4
|
+
YAML) is the fallback parent. Note: a child xpath beginning with `//` is ABSOLUTE in Appium even
|
|
5
|
+
when chained — use accessibility-id / -android uiautomator children for true scoping, or `.//`.
|
|
6
|
+
The selector argument comes from appium-selector-expr (it carries its OWN quotes, or a per-platform
|
|
7
|
+
`driver.isIOS ? … : …` ternary), so it is NOT wrapped in quotes here. --}}
|
|
8
|
+
{{~#if parentLocator~}}{{parentLocator}}.{{#if nth}}$$({{> appium-selector-expr}})[{{nth}}]{{else}}$({{> appium-selector-expr}}){{/if}}{{~else~}}{{#if scope}}$('~{{escapeQuotes scope}}').{{#if nth}}$$({{> appium-selector-expr}})[{{nth}}]{{else}}$({{> appium-selector-expr}}){{/if}}{{else}}{{#if nth}}$$({{> appium-selector-expr}})[{{nth}}]{{else}}$({{> appium-selector-expr}}){{/if}}{{/if}}{{~/if~}}
|
package/src/generators/test-generator/adapters/appium/templates/steps/setup/application-running.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{!-- The app under test is launched in the before hook (activateApp). No action needed. --}}
|
package/src/generators/test-generator/adapters/appium/templates/steps/setup/clear-browser-state.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{!-- No browser on mobile; app state is governed by Appium reset capabilities. No per-step action. --}}
|
package/src/generators/test-generator/adapters/appium/templates/steps/setup/clear-database.hbs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{!-- TODO: reset backend state via a test API/script (same as web). No mobile-specific action. --}}
|