diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 000000000..175f4746e --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,223 @@ +name: E2E Tests +on: + push: + branches: + - main + pull_request: + branches: + - main + merge_group: + types: + - checks_requested + +jobs: + changes: + runs-on: ubuntu-latest + outputs: + android: ${{ steps.filter.outputs.android }} + ios: ${{ steps.filter.outputs.ios }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Check file changes + uses: dorny/paths-filter@v3 + id: filter + with: + filters: | + android: + - 'android/**' + - 'apps/example/android/**' + - 'apps/example/src/**' + - 'src/**' + - 'cpp/**' + - 'package.json' + - 'apps/example/package.json' + - 'react-native.config.js' + - 'babel.config.js' + - '.maestro/**' + ios: + - 'ios/**' + - 'apps/example/ios/**' + - 'apps/example/src/**' + - 'src/**' + - 'cpp/**' + - '*.podspec' + - 'package.json' + - 'apps/example/package.json' + - 'react-native.config.js' + - 'babel.config.js' + - '.maestro/**' + + e2e-ios: + needs: [changes] + if: needs.changes.outputs.ios == 'true' + runs-on: macos-latest + timeout-minutes: 60 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Set up Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + + - name: Restore cocoapods + id: cocoapods-cache + uses: actions/cache/restore@v4 + with: + path: | + **/ios/Pods + key: ${{ runner.os }}-cocoapods-${{ hashFiles('apps/example/ios/Podfile.lock') }} + restore-keys: | + ${{ runner.os }}-cocoapods- + + - name: Install cocoapods + if: steps.cocoapods-cache.outputs.cache-hit != 'true' + run: | + cd apps/example/ios + pod install + env: + NO_FLIPPER: 1 + + - name: Cache cocoapods + if: steps.cocoapods-cache.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: | + **/ios/Pods + key: ${{ steps.cocoapods-cache.outputs.cache-key }} + + - name: Restore Xcode DerivedData + uses: actions/cache/restore@v4 + id: derived-data-cache + with: + path: ~/Library/Developer/Xcode/DerivedData + key: ${{ runner.os }}-derived-data-${{ hashFiles('ios/**', 'apps/example/ios/**', 'cpp/**', 'src/**') }} + restore-keys: | + ${{ runner.os }}-derived-data- + + - name: Install maestro-runner + run: | + curl -fsSL https://open.devicelab.dev/install/maestro-runner | bash + echo "$HOME/.maestro-runner/bin" >> $GITHUB_PATH + + - name: Start Metro + run: yarn example start & + + - name: Run E2E tests + run: yarn test:e2e:ios + + - name: Cache Xcode DerivedData + if: steps.derived-data-cache.outputs.cache-hit != 'true' + uses: actions/cache/save@v4 + with: + path: ~/Library/Developer/Xcode/DerivedData + key: ${{ steps.derived-data-cache.outputs.cache-primary-key }} + + - name: Upload test artifacts + if: failure() + uses: actions/upload-artifact@v4 + with: + name: e2e-ios-artifacts + path: | + reports/ + .maestro/enrichedInput/screenshots/android/*_diff.png + .maestro/enrichedText/screenshots/android/*_diff.png + + e2e-android: + needs: [changes] + if: needs.changes.outputs.android == 'true' + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup + uses: ./.github/actions/setup + + - name: Enable KVM + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + - name: Install JDK + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: '17' + + - name: Install maestro-runner + run: | + curl -fsSL https://open.devicelab.dev/install/maestro-runner | bash + echo "$HOME/.maestro-runner/bin" >> $GITHUB_PATH + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/wrapper + ~/.gradle/caches + key: ${{ runner.os }}-gradle-${{ hashFiles('apps/example/android/gradle/wrapper/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: AVD cache + uses: actions/cache@v4 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-api-36-x86_64 + + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 36 + target: google_apis_playstore + arch: x86_64 + profile: pixel_7 + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim + disable-animations: false + enable-hw-keyboard: true + script: echo "Generated AVD snapshot for caching." + + - name: Start Metro + run: yarn example start & + + - name: Run E2E tests + id: e2e-tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: 36 + target: google_apis_playstore + arch: x86_64 + profile: pixel_7 + force-avd-creation: false + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim + disable-animations: true + disable-spellchecker: true + enable-hw-keyboard: true + script: EMULATOR_SERIAL=emulator-5554 .maestro/scripts/run-tests-ci-android.sh + env: + JAVA_OPTS: '-XX:MaxHeapSize=6g' + + - name: Upload test artifacts + if: ${{ !cancelled() && (steps.e2e-tests.outcome == 'success' || steps.e2e-tests.outcome == 'failure') }} + uses: actions/upload-artifact@v4 + with: + name: e2e-android-artifacts + if-no-files-found: warn + path: | + reports/ + .maestro/enrichedInput/screenshots/android/*_diff.png + .maestro/enrichedText/screenshots/android/*_diff.png diff --git a/.gitignore b/.gitignore index 7d511d167..0ed153df0 100644 --- a/.gitignore +++ b/.gitignore @@ -91,6 +91,7 @@ nitrogen/ # Maestro screenshot diffs .maestro/**/*_diff.png +reports/ # Claude skills .claude/skills/*-internal.md \ No newline at end of file diff --git a/.maestro/enrichedInput/flows/checkbox_toggle.yaml b/.maestro/enrichedInput/flows/checkbox_toggle.yaml index d49957cf4..0d350e689 100644 --- a/.maestro/enrichedInput/flows/checkbox_toggle.yaml +++ b/.maestro/enrichedInput/flows/checkbox_toggle.yaml @@ -11,13 +11,22 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-checkbox-list" -- inputText: "Item one" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Item one" - pressKey: Enter -- inputText: "Item two" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Item two" - pressKey: Enter - pressKey: Backspace -- inputText: "Plain text" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Plain text" - pressKey: Enter - tapOn: diff --git a/.maestro/enrichedInput/flows/codeblock_no_link_detection.yaml b/.maestro/enrichedInput/flows/codeblock_no_link_detection.yaml index 585913519..8840d54c3 100644 --- a/.maestro/enrichedInput/flows/codeblock_no_link_detection.yaml +++ b/.maestro/enrichedInput/flows/codeblock_no_link_detection.yaml @@ -12,7 +12,10 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-code-block" -- inputText: "Hello example.com" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Hello example.com" - assertVisible: id: "toolbar-link" diff --git a/.maestro/enrichedInput/flows/codeblock_style_blocking.yaml b/.maestro/enrichedInput/flows/codeblock_style_blocking.yaml index 962b2f769..708851235 100644 --- a/.maestro/enrichedInput/flows/codeblock_style_blocking.yaml +++ b/.maestro/enrichedInput/flows/codeblock_style_blocking.yaml @@ -14,7 +14,10 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-code-block" -- inputText: "ABC example.com" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "ABC example.com" - assertVisible: id: "toolbar-bold" diff --git a/.maestro/enrichedInput/flows/conflicting_paragraph_merge.yaml b/.maestro/enrichedInput/flows/conflicting_paragraph_merge.yaml index 6ed6ff1e3..cd1bb1f74 100644 --- a/.maestro/enrichedInput/flows/conflicting_paragraph_merge.yaml +++ b/.maestro/enrichedInput/flows/conflicting_paragraph_merge.yaml @@ -11,14 +11,20 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-code-block" -- inputText: "Code text" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Code text" - pressKey: Enter - tapOn: id: "toolbar-code-block" - tapOn: id: "toolbar-heading-1" -- inputText: "H1" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "H1" # Position cursor at start of H1 line - tapOn: @@ -30,7 +36,10 @@ appId: swmansion.enriched.example - runFlow: commands: - pressKey: Backspace -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "editor-input" @@ -42,14 +51,20 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-inline-code" -- inputText: "Inline code" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Inline code" - tapOn: id: "editor-input" point: "5%, 75%" - pressKey: Backspace -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - runFlow: file: "../subflows/capture_or_assert_screenshot.yaml" diff --git a/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_copy.yaml b/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_copy.yaml index 9b8dde963..cd2cb97ab 100644 --- a/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_copy.yaml +++ b/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_copy.yaml @@ -1,45 +1,63 @@ appId: swmansion.enriched.example tags: - - android-only + - android-only --- - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "focus-button" + id: 'focus-button' -- inputText: "EADING" -- doubleTapOn: - id: "editor-input" - point: "10%, 50%" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'EADING' +- runFlow: + when: + platform: iOS + commands: + - doubleTapOn: + id: 'editor-input' + point: '10%, 50%' +- runFlow: + when: + platform: Android + commands: + - longPressOn: + id: 'editor-input' + point: '10%, 50%' + - tapOn: + text: 'Select all' - tapOn: - id: "android:id/floating_toolbar_menu_item_text" - text: "Copy" + text: 'Copy' # Dismiss toolbar with Copy/Cut etc. options - tapOn: - id: "editor-input" + id: 'editor-input' - tapOn: - id: "clear-button" + id: 'clear-button' - tapOn: - id: "focus-button" + id: 'focus-button' - tapOn: - id: "toolbar-heading-1" + id: 'toolbar-heading-1' -- inputText: "H" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H' - longPressOn: - id: "editor-input" - point: "50%, 50%" + id: 'editor-input' + point: '50%, 50%' - tapOn: - id: "android:id/floating_toolbar_menu_item_text" - text: "Paste" + id: 'android:id/floating_toolbar_menu_item_text' + text: 'Paste' - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "extending_paragraph_style_on_paste_after_copy" + SCREENSHOT_NAME: 'extending_paragraph_style_on_paste_after_copy' diff --git a/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_cut.yaml b/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_cut.yaml index 7f6d54852..e7375e5cd 100644 --- a/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_cut.yaml +++ b/.maestro/enrichedInput/flows/extending_paragraph_style_on_paste_after_cut.yaml @@ -1,37 +1,55 @@ appId: swmansion.enriched.example tags: - - android-only + - android-only --- - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "focus-button" + id: 'focus-button' -- inputText: "EADING" -- doubleTapOn: - id: "editor-input" - point: "10%, 50%" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'EADING' +- runFlow: + when: + platform: iOS + commands: + - doubleTapOn: + id: 'editor-input' + point: '10%, 50%' +- runFlow: + when: + platform: Android + commands: + - longPressOn: + id: 'editor-input' + point: '10%, 50%' + - tapOn: + text: 'Select all' - tapOn: - id: "android:id/floating_toolbar_menu_item_text" - text: "Cut" + text: 'Cut' - tapOn: - id: "toolbar-heading-1" + id: 'toolbar-heading-1' -- inputText: "H" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H' - longPressOn: - id: "editor-input" - point: "50%, 50%" + id: 'editor-input' + point: '50%, 50%' - tapOn: - id: "android:id/floating_toolbar_menu_item_text" - text: "Paste" + id: 'android:id/floating_toolbar_menu_item_text' + text: 'Paste' - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "extending_paragraph_style_on_paste_after_cut" + SCREENSHOT_NAME: 'extending_paragraph_style_on_paste_after_cut' diff --git a/.maestro/enrichedInput/flows/font_scaling.yaml b/.maestro/enrichedInput/flows/font_scaling.yaml index bbd06a669..81bbac47f 100644 --- a/.maestro/enrichedInput/flows/font_scaling.yaml +++ b/.maestro/enrichedInput/flows/font_scaling.yaml @@ -15,39 +15,69 @@ tags: - tapOn: id: "editor-input" -- inputText: "Plain " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Plain " - tapOn: id: "toolbar-bold" -- inputText: "bold" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "bold" - tapOn: id: "toolbar-bold" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-italic" -- inputText: "italic" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "italic" - tapOn: id: "toolbar-italic" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-underline" -- inputText: "underline" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "underline" - tapOn: id: "toolbar-underline" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-strikethrough" -- inputText: "strike-through" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "strike-through" - tapOn: id: "toolbar-strikethrough" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-inline-code" -- inputText: "code" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "code" - tapOn: id: "toolbar-inline-code" diff --git a/.maestro/enrichedInput/flows/html_link_not_extended.yaml b/.maestro/enrichedInput/flows/html_link_not_extended.yaml index ebacaddfe..4131a8a66 100644 --- a/.maestro/enrichedInput/flows/html_link_not_extended.yaml +++ b/.maestro/enrichedInput/flows/html_link_not_extended.yaml @@ -18,7 +18,10 @@ appId: swmansion.enriched.example id: "editor-input" point: "95%, 50%" -- inputText: " extra" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " extra" - runFlow: file: "../subflows/capture_or_assert_screenshot.yaml" diff --git a/.maestro/enrichedInput/flows/image_inside_list_parsing.yaml b/.maestro/enrichedInput/flows/image_inside_list_parsing.yaml index 8e20f5235..4eeb28185 100644 --- a/.maestro/enrichedInput/flows/image_inside_list_parsing.yaml +++ b/.maestro/enrichedInput/flows/image_inside_list_parsing.yaml @@ -21,6 +21,12 @@ appId: swmansion.enriched.example - tapOn: id: 'size-max-button' +# Force a delay to ensure the screenshot is loaded +- extendedWaitUntil: + visible: 'fake_element_to_force_delay' + optional: true + timeout: 5000 + - runFlow: file: '../subflows/capture_or_assert_screenshot.yaml' env: diff --git a/.maestro/enrichedInput/flows/image_position_stability.yaml b/.maestro/enrichedInput/flows/image_position_stability.yaml index c9ff9697e..e66926854 100644 --- a/.maestro/enrichedInput/flows/image_position_stability.yaml +++ b/.maestro/enrichedInput/flows/image_position_stability.yaml @@ -6,40 +6,48 @@ appId: swmansion.enriched.example - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "size-max-button" + id: 'size-max-button' - tapOn: - id: "editor-input" + id: 'editor-input' -- inputText: "Paragraph one" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Paragraph one' - pressKey: Enter - pressKey: Enter -- inputText: "Paragraph two" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Paragraph two' - tapOn: - id: "editor-input" - point: "50%,50%" - + id: 'editor-input' + point: '50%,50%' # cursor is now on the blank second line - runFlow: - file: "../subflows/insert_image.yaml" + file: '../subflows/insert_image.yaml' - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "image_position_stability_before_typing" + SCREENSHOT_NAME: 'image_position_stability_before_typing' - tapOn: - id: "editor-input" - point: "50%,50%" -- inputText: "Paragraph in the middle" + id: 'editor-input' + point: '50%,50%' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Paragraph in the middle' - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "image_position_stability_after_typing" + SCREENSHOT_NAME: 'image_position_stability_after_typing' diff --git a/.maestro/enrichedInput/flows/inline_code_blocking_styles.yaml b/.maestro/enrichedInput/flows/inline_code_blocking_styles.yaml index 67dbfac76..debbe7356 100644 --- a/.maestro/enrichedInput/flows/inline_code_blocking_styles.yaml +++ b/.maestro/enrichedInput/flows/inline_code_blocking_styles.yaml @@ -14,7 +14,10 @@ appId: swmansion.enriched.example - waitForAnimationToEnd -- inputText: "snippet" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "snippet" - assertVisible: id: "toolbar-link" diff --git a/.maestro/enrichedInput/flows/inline_code_paste_into_codeblock.yaml b/.maestro/enrichedInput/flows/inline_code_paste_into_codeblock.yaml index 08be018fb..336f8964f 100644 --- a/.maestro/enrichedInput/flows/inline_code_paste_into_codeblock.yaml +++ b/.maestro/enrichedInput/flows/inline_code_paste_into_codeblock.yaml @@ -11,28 +11,55 @@ appId: swmansion.enriched.example - tapOn: id: 'toolbar-inline-code' -- inputText: 'code' -- tapOn: - id: 'toolbar-inline-code' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'code' -- pressKey: Enter -- tapOn: - id: 'toolbar-code-block' +- runFlow: + when: + platform: iOS + commands: + - doubleTapOn: + id: 'editor-input' + point: '10%, 30%' +- runFlow: + when: + platform: Android + commands: + - longPressOn: + id: 'editor-input' + point: '10%, 30%' + - tapOn: + text: 'Select all' -- doubleTapOn: +- tapOn: + text: 'Copy' +- tapOn: id: 'editor-input' - point: '10%, 30%' + point: '70%, 30%' - tapOn: - text: 'Copy' + id: 'toolbar-inline-code' +- pressKey: Enter - tapOn: - id: 'editor-input' - point: '10%, 70%' + id: 'toolbar-code-block' -- longPressOn: - id: 'editor-input' - point: '10%, 70%' +- runFlow: + when: + platform: iOS + commands: + - doubleTapOn: + id: 'editor-input' + point: '10%, 70%' +- runFlow: + when: + platform: Android + commands: + - longPressOn: + id: 'editor-input' + point: '10%, 70%' - tapOn: text: 'Paste' diff --git a/.maestro/enrichedInput/flows/inline_styles_merge.yaml b/.maestro/enrichedInput/flows/inline_styles_merge.yaml index ea843121f..53eb3853d 100644 --- a/.maestro/enrichedInput/flows/inline_styles_merge.yaml +++ b/.maestro/enrichedInput/flows/inline_styles_merge.yaml @@ -16,7 +16,10 @@ appId: swmansion.enriched.example - tapOn: id: 'toolbar-underline' -- inputText: 'First line' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'First line' - pressKey: Enter - tapOn: @@ -25,11 +28,14 @@ appId: swmansion.enriched.example id: 'toolbar-italic' - tapOn: id: 'toolbar-underline' -- inputText: 'Second line' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Second line' - tapOn: id: 'editor-input' - point: '5%,75%' + point: '4%,75%' - pressKey: Backspace diff --git a/.maestro/enrichedInput/flows/inline_styles_removal.yaml b/.maestro/enrichedInput/flows/inline_styles_removal.yaml index 58faf1d2f..c25ba8643 100644 --- a/.maestro/enrichedInput/flows/inline_styles_removal.yaml +++ b/.maestro/enrichedInput/flows/inline_styles_removal.yaml @@ -18,9 +18,15 @@ appId: swmansion.enriched.example - tapOn: id: 'toolbar-strikethrough' -- inputText: 'First line' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'First line' - pressKey: Enter -- inputText: 'Second line' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Second line' - tapOn: id: 'toolbar-code-block' diff --git a/.maestro/enrichedInput/flows/inline_styles_survive_block_toggle.yaml b/.maestro/enrichedInput/flows/inline_styles_survive_block_toggle.yaml index b2e5bfb94..54498b540 100644 --- a/.maestro/enrichedInput/flows/inline_styles_survive_block_toggle.yaml +++ b/.maestro/enrichedInput/flows/inline_styles_survive_block_toggle.yaml @@ -11,11 +11,17 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-bold" -- inputText: "Bold" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Bold" - tapOn: id: "toolbar-bold" -- inputText: " regular" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " regular" - tapOn: id: "toolbar-quote" diff --git a/.maestro/enrichedInput/flows/inline_styles_visual.yaml b/.maestro/enrichedInput/flows/inline_styles_visual.yaml index f8f2719a9..21897a7a4 100644 --- a/.maestro/enrichedInput/flows/inline_styles_visual.yaml +++ b/.maestro/enrichedInput/flows/inline_styles_visual.yaml @@ -8,39 +8,69 @@ appId: swmansion.enriched.example - tapOn: id: "editor-input" -- inputText: "Plain " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Plain " - tapOn: id: "toolbar-bold" -- inputText: "bold" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "bold" - tapOn: id: "toolbar-bold" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-italic" -- inputText: "italic" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "italic" - tapOn: id: "toolbar-italic" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-underline" -- inputText: "underline" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "underline" - tapOn: id: "toolbar-underline" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-strikethrough" -- inputText: "strike-through" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "strike-through" - tapOn: id: "toolbar-strikethrough" -- inputText: " " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: " " - tapOn: id: "toolbar-inline-code" -- inputText: "code" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "code" - tapOn: id: "toolbar-inline-code" diff --git a/.maestro/enrichedInput/flows/line_overlapping.yaml b/.maestro/enrichedInput/flows/line_overlapping.yaml index 575106055..945d3345d 100644 --- a/.maestro/enrichedInput/flows/line_overlapping.yaml +++ b/.maestro/enrichedInput/flows/line_overlapping.yaml @@ -10,15 +10,30 @@ appId: swmansion.enriched.example id: 'editor-input' - pressKey: Enter -- inputText: 'Line one' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line one' - pressKey: Enter -- inputText: 'Line two' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line two' - pressKey: Enter -- inputText: 'Line three' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line three' - pressKey: Enter -- inputText: 'Line four' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line four' - pressKey: Enter -- inputText: 'Line five' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line five' # Tap on the first line to position cursor there - tapOn: @@ -28,11 +43,17 @@ appId: swmansion.enriched.example - tapOn: id: 'toolbar-bold' -- inputText: 'bold' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'bold' - pressKey: Enter - pressKey: Enter - pressKey: Enter -- inputText: 'bold2' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'bold2' - runFlow: file: '../subflows/capture_or_assert_screenshot.yaml' diff --git a/.maestro/enrichedInput/flows/link_not_extended.yaml b/.maestro/enrichedInput/flows/link_not_extended.yaml index a7de9075d..1ff36f6dc 100644 --- a/.maestro/enrichedInput/flows/link_not_extended.yaml +++ b/.maestro/enrichedInput/flows/link_not_extended.yaml @@ -10,7 +10,10 @@ appId: swmansion.enriched.example - tapOn: id: "editor-input" -- inputText: "Hello " +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Hello " - runFlow: file: "../subflows/insert_link.yaml" @@ -25,7 +28,10 @@ appId: swmansion.enriched.example id: "editor-input" point: "95%, 50%" -- inputText: "ing" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "ing" - runFlow: file: "../subflows/capture_or_assert_screenshot.yaml" diff --git a/.maestro/enrichedInput/flows/links_visual.yaml b/.maestro/enrichedInput/flows/links_visual.yaml index bf3ad4c47..cfef16534 100644 --- a/.maestro/enrichedInput/flows/links_visual.yaml +++ b/.maestro/enrichedInput/flows/links_visual.yaml @@ -7,14 +7,30 @@ appId: swmansion.enriched.example id: 'toggle-screen-button' - tapOn: - id: "editor-input" + id: 'editor-input' # autolinks break on text change or paste -- inputText: 'swmansion.com' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'swmansion.com' -- doubleTapOn: - id: 'editor-input' - point: '20%, 50%' +- runFlow: + when: + platform: iOS + commands: + - doubleTapOn: + id: 'editor-input' + point: '20%, 50%' +- runFlow: + when: + platform: Android + commands: + - longPressOn: + id: 'editor-input' + point: '20%, 50%' + - tapOn: + text: 'Select all' - tapOn: text: 'Copy' @@ -28,15 +44,11 @@ appId: swmansion.enriched.example point: '50%, 70%' - tapOn: text: 'Paste' -- inputText: 'm' -- pressKey: Enter -- inputText: 'swm' -- longPressOn: - id: 'editor-input' - point: '50%, 75%' -- tapOn: - text: 'Paste' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'm' - runFlow: file: '../subflows/capture_or_assert_screenshot.yaml' @@ -49,9 +61,22 @@ appId: swmansion.enriched.example env: VALUE: '
' -- doubleTapOn: - id: 'editor-input' - point: '20%, 50%' +- runFlow: + when: + platform: iOS + commands: + - doubleTapOn: + id: 'editor-input' + point: '20%, 50%' +- runFlow: + when: + platform: Android + commands: + - longPressOn: + id: 'editor-input' + point: '20%, 50%' + - tapOn: + text: 'Select all' - tapOn: text: 'Copy' diff --git a/.maestro/enrichedInput/flows/list_newline_insertion.yaml b/.maestro/enrichedInput/flows/list_newline_insertion.yaml index 79e0dfd1b..84a57084c 100644 --- a/.maestro/enrichedInput/flows/list_newline_insertion.yaml +++ b/.maestro/enrichedInput/flows/list_newline_insertion.yaml @@ -16,7 +16,10 @@ appId: swmansion.enriched.example when: platform: android commands: - - inputText: "XXXXXXXXXXXXXXXXXXXXXXXX" + - runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "XXXXXXXXXXXXXXXXXXXXXXXX" - tapOn: id: "editor-input" point: "50%,50%" @@ -29,7 +32,10 @@ appId: swmansion.enriched.example when: platform: ios commands: - - inputText: "XXXXXXXXXXX XXXXXXXXXXXXX" + - runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "XXXXXXXXXXX XXXXXXXXXXXXX" - tapOn: id: "editor-input" point: "50%,50%" diff --git a/.maestro/enrichedInput/flows/mention_popup_closing_on_cursor_travel.yaml b/.maestro/enrichedInput/flows/mention_popup_closing_on_cursor_travel.yaml index c3cf07e74..38e02cf8e 100644 --- a/.maestro/enrichedInput/flows/mention_popup_closing_on_cursor_travel.yaml +++ b/.maestro/enrichedInput/flows/mention_popup_closing_on_cursor_travel.yaml @@ -5,41 +5,44 @@ appId: swmansion.enriched.example - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "editor-input" + id: 'editor-input' -- inputText: "mentions #gen @J" +- runFlow: + file: '../subflows/set_editor_value.yaml' + env: + VALUE: 'mentions #gen @J' # user popup visible - runFlow: - file: "../subflows/capture_or_assert_fullscreen_screenshot.yaml" + file: '../subflows/capture_or_assert_fullscreen_screenshot.yaml' env: - SCREENSHOT_NAME: "mention_popup_closing_on_cursor_travel_1" + SCREENSHOT_NAME: 'mention_popup_closing_on_cursor_travel_1' - tapOn: - id: "focus-button" + id: 'focus-button' - tapOn: - id: "editor-input" - point: "30%, 50%" + id: 'editor-input' + point: '30%, 50%' # channel popup visible - runFlow: - file: "../subflows/capture_or_assert_fullscreen_screenshot.yaml" + file: '../subflows/capture_or_assert_fullscreen_screenshot.yaml' env: - SCREENSHOT_NAME: "mention_popup_closing_on_cursor_travel_2" + SCREENSHOT_NAME: 'mention_popup_closing_on_cursor_travel_2' - tapOn: - id: "focus-button" + id: 'focus-button' - tapOn: - id: "editor-input" - point: "10%, 50%" + id: 'editor-input' + point: '10%, 50%' # no popup visible - runFlow: - file: "../subflows/capture_or_assert_fullscreen_screenshot.yaml" + file: '../subflows/capture_or_assert_fullscreen_screenshot.yaml' env: - SCREENSHOT_NAME: "mention_popup_closing_on_cursor_travel_3" + SCREENSHOT_NAME: 'mention_popup_closing_on_cursor_travel_3' diff --git a/.maestro/enrichedInput/flows/ordered_list_renumbering.yaml b/.maestro/enrichedInput/flows/ordered_list_renumbering.yaml index 9865c2693..d0edf64c4 100644 --- a/.maestro/enrichedInput/flows/ordered_list_renumbering.yaml +++ b/.maestro/enrichedInput/flows/ordered_list_renumbering.yaml @@ -12,11 +12,20 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-ordered-list" -- inputText: "A" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "A" - pressKey: Enter -- inputText: "B" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "B" - pressKey: Enter -- inputText: "C" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "C" # Tap on the second line to position cursor there - tapOn: diff --git a/.maestro/enrichedInput/flows/paragraph_style_removal.yaml b/.maestro/enrichedInput/flows/paragraph_style_removal.yaml index c749a0054..81e31164f 100644 --- a/.maestro/enrichedInput/flows/paragraph_style_removal.yaml +++ b/.maestro/enrichedInput/flows/paragraph_style_removal.yaml @@ -14,11 +14,20 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-quote" -- inputText: "A" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "A" - pressKey: Enter -- inputText: "B" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "B" - pressKey: Enter -- inputText: "C" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "C" # Tap on the second line - tapOn: diff --git a/.maestro/enrichedInput/flows/paragraph_style_toggle.yaml b/.maestro/enrichedInput/flows/paragraph_style_toggle.yaml index 4e200abe0..c60e8d597 100644 --- a/.maestro/enrichedInput/flows/paragraph_style_toggle.yaml +++ b/.maestro/enrichedInput/flows/paragraph_style_toggle.yaml @@ -14,11 +14,20 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-quote" -- inputText: "1" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "1" - pressKey: Enter -- inputText: "2" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "2" - pressKey: Enter -- inputText: "3" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "3" # Tap on the second line - tapOn: diff --git a/.maestro/enrichedInput/flows/paragraph_styles_alignment_visual.yaml b/.maestro/enrichedInput/flows/paragraph_styles_alignment_visual.yaml index ae5d09c57..6ca09c40d 100644 --- a/.maestro/enrichedInput/flows/paragraph_styles_alignment_visual.yaml +++ b/.maestro/enrichedInput/flows/paragraph_styles_alignment_visual.yaml @@ -10,33 +10,51 @@ appId: swmansion.enriched.example id: 'editor-input' # Left-aligned text -- inputText: 'Left aligned' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Left aligned' - pressKey: Enter # Centre-aligned - tapOn: id: 'toolbar-align-center' -- inputText: 'Centre aligned' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Centre aligned' - pressKey: Enter # Heading 6 - tapOn: id: 'toolbar-heading-6' -- inputText: 'Heading 6' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Heading 6' - pressKey: Enter # Right-aligned text - tapOn: id: 'toolbar-align-right' -- inputText: 'Right aligned' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Right aligned' - pressKey: Enter # List with right-aligned items - tapOn: id: 'toolbar-ordered-list' -- inputText: 'Element 1' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Element 1' - pressKey: Enter -- inputText: 'Element 2' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Element 2' - runFlow: file: '../subflows/capture_or_assert_screenshot.yaml' diff --git a/.maestro/enrichedInput/flows/paragraph_styles_blocks_visual.yaml b/.maestro/enrichedInput/flows/paragraph_styles_blocks_visual.yaml index 1a437c12f..f00637781 100644 --- a/.maestro/enrichedInput/flows/paragraph_styles_blocks_visual.yaml +++ b/.maestro/enrichedInput/flows/paragraph_styles_blocks_visual.yaml @@ -12,21 +12,36 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-quote" -- inputText: "Quote 1" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Quote 1" - pressKey: Enter -- inputText: "Quote 2" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Quote 2" - pressKey: Enter - tapOn: id: "toolbar-quote" -- inputText: "Normal paragraph" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Normal paragraph" - pressKey: Enter - tapOn: id: "toolbar-code-block" -- inputText: "Code 1" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Code 1" - pressKey: Enter -- inputText: "Code 2" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Code 2" - runFlow: file: "../subflows/capture_or_assert_screenshot.yaml" diff --git a/.maestro/enrichedInput/flows/paragraph_styles_headings_visual.yaml b/.maestro/enrichedInput/flows/paragraph_styles_headings_visual.yaml index 70c426fd4..c396b06a7 100644 --- a/.maestro/enrichedInput/flows/paragraph_styles_headings_visual.yaml +++ b/.maestro/enrichedInput/flows/paragraph_styles_headings_visual.yaml @@ -4,43 +4,61 @@ appId: swmansion.enriched.example - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "editor-input" + id: 'editor-input' - tapOn: - id: "toolbar-heading-1" -- inputText: "H1" + id: 'toolbar-heading-1' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H1' - pressKey: Enter - tapOn: - id: "toolbar-heading-2" -- inputText: "H2" + id: 'toolbar-heading-2' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H2' - pressKey: Enter - tapOn: - id: "toolbar-heading-3" -- inputText: "H3" + id: 'toolbar-heading-3' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H3' - pressKey: Enter - tapOn: - id: "toolbar-heading-4" -- inputText: "H4" + id: 'toolbar-heading-4' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H4' - pressKey: Enter - tapOn: - id: "toolbar-heading-5" -- inputText: "H5" + id: 'toolbar-heading-5' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H5' - pressKey: Enter - tapOn: - id: "toolbar-heading-6" -- inputText: "H6" + id: 'toolbar-heading-6' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'H6' - tapOn: - id: "size-max-button" + id: 'size-max-button' - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "paragraph_styles_headings" + SCREENSHOT_NAME: 'paragraph_styles_headings' diff --git a/.maestro/enrichedInput/flows/paragraph_styles_lists_visual.yaml b/.maestro/enrichedInput/flows/paragraph_styles_lists_visual.yaml index 4368ef3dc..3db909101 100644 --- a/.maestro/enrichedInput/flows/paragraph_styles_lists_visual.yaml +++ b/.maestro/enrichedInput/flows/paragraph_styles_lists_visual.yaml @@ -11,33 +11,57 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-ordered-list" -- inputText: "First" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "First" - pressKey: Enter -- inputText: "Second" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Second" - pressKey: Enter - tapOn: id: "toolbar-ordered-list" -- inputText: "Normal" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Normal" - pressKey: Enter - tapOn: id: "toolbar-unordered-list" -- inputText: "First" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "First" - pressKey: Enter -- inputText: "Second" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Second" - pressKey: Enter - tapOn: id: "toolbar-unordered-list" -- inputText: "Normal" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Normal" - pressKey: Enter - tapOn: id: "toolbar-checkbox-list" -- inputText: "First" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "First" - pressKey: Enter -- inputText: "Second" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Second" - tapOn: id: "size-max-button" diff --git a/.maestro/enrichedInput/flows/paragraph_styles_no_crash.yaml b/.maestro/enrichedInput/flows/paragraph_styles_no_crash.yaml index 4710b5257..88664c2de 100644 --- a/.maestro/enrichedInput/flows/paragraph_styles_no_crash.yaml +++ b/.maestro/enrichedInput/flows/paragraph_styles_no_crash.yaml @@ -11,42 +11,60 @@ appId: swmansion.enriched.example - tapOn: id: "toolbar-unordered-list" -- inputText: "Unordered" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Unordered" - pressKey: Enter - tapOn: id: "toolbar-unordered-list" - tapOn: id: "toolbar-ordered-list" -- inputText: "Ordered" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Ordered" - pressKey: Enter - tapOn: id: "toolbar-ordered-list" - tapOn: id: "toolbar-checkbox-list" -- inputText: "Checkbox" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Checkbox" - pressKey: Enter - tapOn: id: "toolbar-checkbox-list" - tapOn: id: "toolbar-code-block" -- inputText: "Code" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Code" - pressKey: Enter - tapOn: id: "toolbar-code-block" - tapOn: id: "toolbar-quote" -- inputText: "Quote" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Quote" - pressKey: Enter - tapOn: id: "toolbar-quote" - tapOn: id: "toolbar-heading-1" -- inputText: "Heading" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: "Heading" - assertVisible: id: "editor-input" diff --git a/.maestro/enrichedInput/flows/scrolling_after_typing.yaml b/.maestro/enrichedInput/flows/scrolling_after_typing.yaml index e4711a8d4..ea294e234 100644 --- a/.maestro/enrichedInput/flows/scrolling_after_typing.yaml +++ b/.maestro/enrichedInput/flows/scrolling_after_typing.yaml @@ -1,67 +1,98 @@ appId: swmansion.enriched.example -# Tests basic scrollability +# Tests basic scrollability --- - - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "editor-input" + id: 'editor-input' -- inputText: "Line one" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line one' - pressKey: Enter -- inputText: "Line two" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line two' - pressKey: Enter -- inputText: "Line three" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line three' - pressKey: Enter -- inputText: "Line four" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line four' - pressKey: Enter -- inputText: "Line five" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line five' - pressKey: Enter -- inputText: "Line six" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line six' - pressKey: Enter -- inputText: "Line seven" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line seven' - pressKey: Enter -- inputText: "Line eight" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line eight' - pressKey: Enter -- inputText: "Line nine" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Line nine' - pressKey: Enter -- inputText: "Line ten" - - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../../subflows/input_text.yaml' env: - SCREENSHOT_NAME: "scroll_after_typing_long_content_bottom" - -- tapOn: - id: "focus-button" + TEXT: 'Line ten' - swipe: from: - id: "editor-input" + id: 'editor-input' direction: DOWN - waitForAnimationToEnd +# Force a delay to ensure the scrollbar is invisible +- extendedWaitUntil: + visible: 'fake_element_to_force_delay' + optional: true + timeout: 200 + - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "scroll_after_typing_long_content_top" + SCREENSHOT_NAME: 'scroll_after_typing_long_content_top' - tapOn: - id: "editor-input" - point: "0%,0%" + id: 'editor-input' + point: '0%,0%' - swipe: from: - id: "editor-input" + id: 'editor-input' direction: UP - waitForAnimationToEnd +- tapOn: + id: 'blur-button' +- waitForAnimationToEnd + - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "scroll_after_typing_long_content_bottom" + SCREENSHOT_NAME: 'scroll_after_typing_long_content_bottom' diff --git a/.maestro/enrichedInput/flows/scrolling_with_paragraph_styles.yaml b/.maestro/enrichedInput/flows/scrolling_with_paragraph_styles.yaml index 96e987fe1..9d5c0529f 100644 --- a/.maestro/enrichedInput/flows/scrolling_with_paragraph_styles.yaml +++ b/.maestro/enrichedInput/flows/scrolling_with_paragraph_styles.yaml @@ -4,71 +4,108 @@ appId: swmansion.enriched.example - launchApp - tapOn: - id: "toggle-screen-button" + id: 'toggle-screen-button' - tapOn: - id: "editor-input" + id: 'editor-input' - tapOn: - id: "toolbar-unordered-list" -- inputText: "Bullet item one" + id: 'toolbar-unordered-list' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Bullet item one' - pressKey: Enter -- inputText: "Bullet item two" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Bullet item two' - pressKey: Enter -- inputText: "Bullet item three" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Bullet item three' - pressKey: Enter - pressKey: Enter - tapOn: - id: "toolbar-quote" -- inputText: "Quoted line one" + id: 'toolbar-quote' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Quoted line one' - pressKey: Enter -- inputText: "Quoted line two" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Quoted line two' - pressKey: Enter -- inputText: "Quoted line three" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Quoted line three' - pressKey: Enter - tapOn: - id: "toolbar-quote" + id: 'toolbar-quote' - tapOn: - id: "toolbar-ordered-list" -- inputText: "Numbered item one" + id: 'toolbar-ordered-list' +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Numbered item one' - pressKey: Enter -- inputText: "Numbered item two" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Numbered item two' - pressKey: Enter -- inputText: "Numbered item three" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Numbered item three' - pressKey: Enter - pressKey: Enter - pressKey: Backspace -- inputText: "Plain text line one" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Plain text line one' - pressKey: Enter -- inputText: "Plain text final" +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: 'Plain text final' - swipe: from: - id: "editor-input" + id: 'editor-input' direction: DOWN +- waitForAnimationToEnd + - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "scrolling_paragraph_styles_top" + SCREENSHOT_NAME: 'scrolling_paragraph_styles_top' - tapOn: - id: "focus-button" + id: 'focus-button' - tapOn: - id: "editor-input" - point: "0%,0%" + id: 'editor-input' + point: '0%,0%' - swipe: from: - id: "editor-input" + id: 'editor-input' direction: UP +- waitForAnimationToEnd + - runFlow: - file: "../subflows/capture_or_assert_screenshot.yaml" + file: '../subflows/capture_or_assert_screenshot.yaml' env: - SCREENSHOT_NAME: "scrolling_paragraph_styles_bottom" + SCREENSHOT_NAME: 'scrolling_paragraph_styles_bottom' diff --git a/.maestro/enrichedInput/screenshots/android/checkbox_toggle.png b/.maestro/enrichedInput/screenshots/android/checkbox_toggle.png index b3b661a85..82aba0c3f 100644 Binary files a/.maestro/enrichedInput/screenshots/android/checkbox_toggle.png and b/.maestro/enrichedInput/screenshots/android/checkbox_toggle.png differ diff --git a/.maestro/enrichedInput/screenshots/android/codeblock_no_link_detection.png b/.maestro/enrichedInput/screenshots/android/codeblock_no_link_detection.png index 78e27577d..ebd809209 100644 Binary files a/.maestro/enrichedInput/screenshots/android/codeblock_no_link_detection.png and b/.maestro/enrichedInput/screenshots/android/codeblock_no_link_detection.png differ diff --git a/.maestro/enrichedInput/screenshots/android/codeblock_style_blocking.png b/.maestro/enrichedInput/screenshots/android/codeblock_style_blocking.png index 44ae70724..c9c7014bd 100644 Binary files a/.maestro/enrichedInput/screenshots/android/codeblock_style_blocking.png and b/.maestro/enrichedInput/screenshots/android/codeblock_style_blocking.png differ diff --git a/.maestro/enrichedInput/screenshots/android/conflicting_paragraph_merge.png b/.maestro/enrichedInput/screenshots/android/conflicting_paragraph_merge.png index 074a56c79..5cb1db832 100644 Binary files a/.maestro/enrichedInput/screenshots/android/conflicting_paragraph_merge.png and b/.maestro/enrichedInput/screenshots/android/conflicting_paragraph_merge.png differ diff --git a/.maestro/enrichedInput/screenshots/android/empty_element_parsing.png b/.maestro/enrichedInput/screenshots/android/empty_element_parsing.png index 7e28ad4ea..3270f5705 100644 Binary files a/.maestro/enrichedInput/screenshots/android/empty_element_parsing.png and b/.maestro/enrichedInput/screenshots/android/empty_element_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/empty_html_block_parsing.png b/.maestro/enrichedInput/screenshots/android/empty_html_block_parsing.png index d0fa3c3d1..68dfb0506 100644 Binary files a/.maestro/enrichedInput/screenshots/android/empty_html_block_parsing.png and b/.maestro/enrichedInput/screenshots/android/empty_html_block_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/empty_lists_parsing.png b/.maestro/enrichedInput/screenshots/android/empty_lists_parsing.png index d777b0b24..08997a780 100644 Binary files a/.maestro/enrichedInput/screenshots/android/empty_lists_parsing.png and b/.maestro/enrichedInput/screenshots/android/empty_lists_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_copy.png b/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_copy.png index f717ac4fa..a4d787fe4 100644 Binary files a/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_copy.png and b/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_copy.png differ diff --git a/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_cut.png b/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_cut.png index f717ac4fa..a4d787fe4 100644 Binary files a/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_cut.png and b/.maestro/enrichedInput/screenshots/android/extending_paragraph_style_on_paste_after_cut.png differ diff --git a/.maestro/enrichedInput/screenshots/android/font_scaling.png b/.maestro/enrichedInput/screenshots/android/font_scaling.png index 6b955aa4e..b75174700 100644 Binary files a/.maestro/enrichedInput/screenshots/android/font_scaling.png and b/.maestro/enrichedInput/screenshots/android/font_scaling.png differ diff --git a/.maestro/enrichedInput/screenshots/android/font_scaling_placeholder.png b/.maestro/enrichedInput/screenshots/android/font_scaling_placeholder.png index 1288cc4b3..024799772 100644 Binary files a/.maestro/enrichedInput/screenshots/android/font_scaling_placeholder.png and b/.maestro/enrichedInput/screenshots/android/font_scaling_placeholder.png differ diff --git a/.maestro/enrichedInput/screenshots/android/html_link_not_extended.png b/.maestro/enrichedInput/screenshots/android/html_link_not_extended.png index d0198a17d..183e46f60 100644 Binary files a/.maestro/enrichedInput/screenshots/android/html_link_not_extended.png and b/.maestro/enrichedInput/screenshots/android/html_link_not_extended.png differ diff --git a/.maestro/enrichedInput/screenshots/android/image_inside_list_parsing.png b/.maestro/enrichedInput/screenshots/android/image_inside_list_parsing.png index 8c7af1ca3..8cd47a926 100644 Binary files a/.maestro/enrichedInput/screenshots/android/image_inside_list_parsing.png and b/.maestro/enrichedInput/screenshots/android/image_inside_list_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/image_position_stability_after_typing.png b/.maestro/enrichedInput/screenshots/android/image_position_stability_after_typing.png index c0a316c11..9a7741f52 100644 Binary files a/.maestro/enrichedInput/screenshots/android/image_position_stability_after_typing.png and b/.maestro/enrichedInput/screenshots/android/image_position_stability_after_typing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/image_position_stability_before_typing.png b/.maestro/enrichedInput/screenshots/android/image_position_stability_before_typing.png index 063a9ad02..a1643511d 100644 Binary files a/.maestro/enrichedInput/screenshots/android/image_position_stability_before_typing.png and b/.maestro/enrichedInput/screenshots/android/image_position_stability_before_typing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/initial_html_parsing.png b/.maestro/enrichedInput/screenshots/android/initial_html_parsing.png index 628395281..b2b09a80a 100644 Binary files a/.maestro/enrichedInput/screenshots/android/initial_html_parsing.png and b/.maestro/enrichedInput/screenshots/android/initial_html_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/android/initial_placeholder.png b/.maestro/enrichedInput/screenshots/android/initial_placeholder.png index 63fdb011d..cab2068d5 100644 Binary files a/.maestro/enrichedInput/screenshots/android/initial_placeholder.png and b/.maestro/enrichedInput/screenshots/android/initial_placeholder.png differ diff --git a/.maestro/enrichedInput/screenshots/android/inline_code_paste_into_codeblock.png b/.maestro/enrichedInput/screenshots/android/inline_code_paste_into_codeblock.png index 995be24f8..72f505e64 100644 Binary files a/.maestro/enrichedInput/screenshots/android/inline_code_paste_into_codeblock.png and b/.maestro/enrichedInput/screenshots/android/inline_code_paste_into_codeblock.png differ diff --git a/.maestro/enrichedInput/screenshots/android/inline_styles.png b/.maestro/enrichedInput/screenshots/android/inline_styles.png index 818443706..a06f96772 100644 Binary files a/.maestro/enrichedInput/screenshots/android/inline_styles.png and b/.maestro/enrichedInput/screenshots/android/inline_styles.png differ diff --git a/.maestro/enrichedInput/screenshots/android/inline_styles_merge.png b/.maestro/enrichedInput/screenshots/android/inline_styles_merge.png index e1b1cece0..1a331a1ac 100644 Binary files a/.maestro/enrichedInput/screenshots/android/inline_styles_merge.png and b/.maestro/enrichedInput/screenshots/android/inline_styles_merge.png differ diff --git a/.maestro/enrichedInput/screenshots/android/inline_styles_removal.png b/.maestro/enrichedInput/screenshots/android/inline_styles_removal.png index 731ac2b2a..4211172a6 100644 Binary files a/.maestro/enrichedInput/screenshots/android/inline_styles_removal.png and b/.maestro/enrichedInput/screenshots/android/inline_styles_removal.png differ diff --git a/.maestro/enrichedInput/screenshots/android/inline_styles_survive_block_toggle.png b/.maestro/enrichedInput/screenshots/android/inline_styles_survive_block_toggle.png index e98448191..250e317e9 100644 Binary files a/.maestro/enrichedInput/screenshots/android/inline_styles_survive_block_toggle.png and b/.maestro/enrichedInput/screenshots/android/inline_styles_survive_block_toggle.png differ diff --git a/.maestro/enrichedInput/screenshots/android/line_overlapping.png b/.maestro/enrichedInput/screenshots/android/line_overlapping.png index 760674223..adcac1661 100644 Binary files a/.maestro/enrichedInput/screenshots/android/line_overlapping.png and b/.maestro/enrichedInput/screenshots/android/line_overlapping.png differ diff --git a/.maestro/enrichedInput/screenshots/android/link_not_extended.png b/.maestro/enrichedInput/screenshots/android/link_not_extended.png index 8fba4d554..16db13bd1 100644 Binary files a/.maestro/enrichedInput/screenshots/android/link_not_extended.png and b/.maestro/enrichedInput/screenshots/android/link_not_extended.png differ diff --git a/.maestro/enrichedInput/screenshots/android/links_visual_auto.png b/.maestro/enrichedInput/screenshots/android/links_visual_auto.png index 369f3a2ea..8cba8aebc 100644 Binary files a/.maestro/enrichedInput/screenshots/android/links_visual_auto.png and b/.maestro/enrichedInput/screenshots/android/links_visual_auto.png differ diff --git a/.maestro/enrichedInput/screenshots/android/links_visual_manual.png b/.maestro/enrichedInput/screenshots/android/links_visual_manual.png index cc265a9db..adcbe4381 100644 Binary files a/.maestro/enrichedInput/screenshots/android/links_visual_manual.png and b/.maestro/enrichedInput/screenshots/android/links_visual_manual.png differ diff --git a/.maestro/enrichedInput/screenshots/android/list_newline_insertion.png b/.maestro/enrichedInput/screenshots/android/list_newline_insertion.png index 12b3b0384..50f0da4e2 100644 Binary files a/.maestro/enrichedInput/screenshots/android/list_newline_insertion.png and b/.maestro/enrichedInput/screenshots/android/list_newline_insertion.png differ diff --git a/.maestro/enrichedInput/screenshots/android/mention_parsing_single_quoted_attributes.png b/.maestro/enrichedInput/screenshots/android/mention_parsing_single_quoted_attributes.png index a8d68a2cd..e3656cca6 100644 Binary files a/.maestro/enrichedInput/screenshots/android/mention_parsing_single_quoted_attributes.png and b/.maestro/enrichedInput/screenshots/android/mention_parsing_single_quoted_attributes.png differ diff --git a/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_1.png b/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_1.png index 74947bcfd..9f26d4154 100644 Binary files a/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_1.png and b/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_1.png differ diff --git a/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_2.png b/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_2.png index 7a053e6c5..a0679f176 100644 Binary files a/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_2.png and b/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_2.png differ diff --git a/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_3.png b/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_3.png index d80b9a756..1ea1f331a 100644 Binary files a/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_3.png and b/.maestro/enrichedInput/screenshots/android/mention_popup_closing_on_cursor_travel_3.png differ diff --git a/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_deleting_second_line.png b/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_deleting_second_line.png index 5d00fb1ce..ed5633b75 100644 Binary files a/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_deleting_second_line.png and b/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_deleting_second_line.png differ diff --git a/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_emptying_second_line.png b/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_emptying_second_line.png index 53049a519..0b37c1a1c 100644 Binary files a/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_emptying_second_line.png and b/.maestro/enrichedInput/screenshots/android/ordered_list_renumbering_after_emptying_second_line.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_style_after_removal.png b/.maestro/enrichedInput/screenshots/android/paragraph_style_after_removal.png index 5f5e0c7af..3a711c478 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_style_after_removal.png and b/.maestro/enrichedInput/screenshots/android/paragraph_style_after_removal.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_style_toggle.png b/.maestro/enrichedInput/screenshots/android/paragraph_style_toggle.png index 756cfe7e5..d84824aaf 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_style_toggle.png and b/.maestro/enrichedInput/screenshots/android/paragraph_style_toggle.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_styles_alignment.png b/.maestro/enrichedInput/screenshots/android/paragraph_styles_alignment.png index 31828ca25..a68cb3811 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_styles_alignment.png and b/.maestro/enrichedInput/screenshots/android/paragraph_styles_alignment.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_styles_blocks.png b/.maestro/enrichedInput/screenshots/android/paragraph_styles_blocks.png index 4d075df95..5396defc6 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_styles_blocks.png and b/.maestro/enrichedInput/screenshots/android/paragraph_styles_blocks.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_styles_headings.png b/.maestro/enrichedInput/screenshots/android/paragraph_styles_headings.png index d94481f0a..67f0a0a57 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_styles_headings.png and b/.maestro/enrichedInput/screenshots/android/paragraph_styles_headings.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_styles_lists.png b/.maestro/enrichedInput/screenshots/android/paragraph_styles_lists.png index 7bb6e38db..ff5677f6c 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_styles_lists.png and b/.maestro/enrichedInput/screenshots/android/paragraph_styles_lists.png differ diff --git a/.maestro/enrichedInput/screenshots/android/paragraph_styles_no_crash.png b/.maestro/enrichedInput/screenshots/android/paragraph_styles_no_crash.png index 3278d7428..1cb05225e 100644 Binary files a/.maestro/enrichedInput/screenshots/android/paragraph_styles_no_crash.png and b/.maestro/enrichedInput/screenshots/android/paragraph_styles_no_crash.png differ diff --git a/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_bottom.png b/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_bottom.png index adf2bd9cc..6dc88b27d 100644 Binary files a/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_bottom.png and b/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_bottom.png differ diff --git a/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_top.png b/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_top.png index 0fb8b9b36..7d33f2aad 100644 Binary files a/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_top.png and b/.maestro/enrichedInput/screenshots/android/scroll_after_typing_long_content_top.png differ diff --git a/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_bottom.png b/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_bottom.png index 9c2dd9795..9064d483a 100644 Binary files a/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_bottom.png and b/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_bottom.png differ diff --git a/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_top.png b/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_top.png index 3b946339f..e86256624 100644 Binary files a/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_top.png and b/.maestro/enrichedInput/screenshots/android/scrolling_paragraph_styles_top.png differ diff --git a/.maestro/enrichedInput/screenshots/android/scrolling_set_value_bottom.png b/.maestro/enrichedInput/screenshots/android/scrolling_set_value_bottom.png index adf2bd9cc..6dc88b27d 100644 Binary files a/.maestro/enrichedInput/screenshots/android/scrolling_set_value_bottom.png and b/.maestro/enrichedInput/screenshots/android/scrolling_set_value_bottom.png differ diff --git a/.maestro/enrichedInput/screenshots/android/scrolling_set_value_top.png b/.maestro/enrichedInput/screenshots/android/scrolling_set_value_top.png index 0fb8b9b36..7d33f2aad 100644 Binary files a/.maestro/enrichedInput/screenshots/android/scrolling_set_value_top.png and b/.maestro/enrichedInput/screenshots/android/scrolling_set_value_top.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/checkbox_toggle.png b/.maestro/enrichedInput/screenshots/ios/checkbox_toggle.png index 64e25fbe9..9e93238f8 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/checkbox_toggle.png and b/.maestro/enrichedInput/screenshots/ios/checkbox_toggle.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/codeblock_br_preservation.png b/.maestro/enrichedInput/screenshots/ios/codeblock_br_preservation.png index 28727a10e..5c7adec73 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/codeblock_br_preservation.png and b/.maestro/enrichedInput/screenshots/ios/codeblock_br_preservation.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/codeblock_no_link_detection.png b/.maestro/enrichedInput/screenshots/ios/codeblock_no_link_detection.png index f78d43e34..d6f84b23c 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/codeblock_no_link_detection.png and b/.maestro/enrichedInput/screenshots/ios/codeblock_no_link_detection.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/codeblock_style_blocking.png b/.maestro/enrichedInput/screenshots/ios/codeblock_style_blocking.png index 0b0fd68ef..782462fb2 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/codeblock_style_blocking.png and b/.maestro/enrichedInput/screenshots/ios/codeblock_style_blocking.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/conflicting_paragraph_merge.png b/.maestro/enrichedInput/screenshots/ios/conflicting_paragraph_merge.png index b9decd9f7..d011cd7b5 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/conflicting_paragraph_merge.png and b/.maestro/enrichedInput/screenshots/ios/conflicting_paragraph_merge.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/empty_element_parsing.png b/.maestro/enrichedInput/screenshots/ios/empty_element_parsing.png index ea9dd3310..86433dc2b 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/empty_element_parsing.png and b/.maestro/enrichedInput/screenshots/ios/empty_element_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/empty_html_block_parsing.png b/.maestro/enrichedInput/screenshots/ios/empty_html_block_parsing.png index 9dd93697f..3cbcf5785 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/empty_html_block_parsing.png and b/.maestro/enrichedInput/screenshots/ios/empty_html_block_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/empty_lists_parsing.png b/.maestro/enrichedInput/screenshots/ios/empty_lists_parsing.png index 015e7d397..efcee0bee 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/empty_lists_parsing.png and b/.maestro/enrichedInput/screenshots/ios/empty_lists_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/font_scaling.png b/.maestro/enrichedInput/screenshots/ios/font_scaling.png index ccc86279c..ed139b3f5 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/font_scaling.png and b/.maestro/enrichedInput/screenshots/ios/font_scaling.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/font_scaling_placeholder.png b/.maestro/enrichedInput/screenshots/ios/font_scaling_placeholder.png index 99c329c32..4b890dbc0 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/font_scaling_placeholder.png and b/.maestro/enrichedInput/screenshots/ios/font_scaling_placeholder.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/html_link_not_extended.png b/.maestro/enrichedInput/screenshots/ios/html_link_not_extended.png index 42920d325..b1952b89a 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/html_link_not_extended.png and b/.maestro/enrichedInput/screenshots/ios/html_link_not_extended.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/image_inside_list_parsing.png b/.maestro/enrichedInput/screenshots/ios/image_inside_list_parsing.png index 599bd6522..2eb105b59 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/image_inside_list_parsing.png and b/.maestro/enrichedInput/screenshots/ios/image_inside_list_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/initial_html_parsing.png b/.maestro/enrichedInput/screenshots/ios/initial_html_parsing.png index 8bbe3f484..fc3efe516 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/initial_html_parsing.png and b/.maestro/enrichedInput/screenshots/ios/initial_html_parsing.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/initial_placeholder.png b/.maestro/enrichedInput/screenshots/ios/initial_placeholder.png index 7a6729d42..d133a8656 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/initial_placeholder.png and b/.maestro/enrichedInput/screenshots/ios/initial_placeholder.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/inline_code_paste_into_codeblock.png b/.maestro/enrichedInput/screenshots/ios/inline_code_paste_into_codeblock.png index d739d1720..137c32ee0 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/inline_code_paste_into_codeblock.png and b/.maestro/enrichedInput/screenshots/ios/inline_code_paste_into_codeblock.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/inline_styles.png b/.maestro/enrichedInput/screenshots/ios/inline_styles.png index 9a9acc094..7494bae8d 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/inline_styles.png and b/.maestro/enrichedInput/screenshots/ios/inline_styles.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/inline_styles_merge.png b/.maestro/enrichedInput/screenshots/ios/inline_styles_merge.png index a52dbeef6..211ac8cba 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/inline_styles_merge.png and b/.maestro/enrichedInput/screenshots/ios/inline_styles_merge.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/inline_styles_removal.png b/.maestro/enrichedInput/screenshots/ios/inline_styles_removal.png index a7b19f9c8..de3c3a1b5 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/inline_styles_removal.png and b/.maestro/enrichedInput/screenshots/ios/inline_styles_removal.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/inline_styles_survive_block_toggle.png b/.maestro/enrichedInput/screenshots/ios/inline_styles_survive_block_toggle.png index 0058f528b..34e14d48d 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/inline_styles_survive_block_toggle.png and b/.maestro/enrichedInput/screenshots/ios/inline_styles_survive_block_toggle.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/line_overlapping.png b/.maestro/enrichedInput/screenshots/ios/line_overlapping.png index fa0eac630..05cd63217 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/line_overlapping.png and b/.maestro/enrichedInput/screenshots/ios/line_overlapping.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/link_not_extended.png b/.maestro/enrichedInput/screenshots/ios/link_not_extended.png index cc91179c8..00660f2db 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/link_not_extended.png and b/.maestro/enrichedInput/screenshots/ios/link_not_extended.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/links_visual_auto.png b/.maestro/enrichedInput/screenshots/ios/links_visual_auto.png index 2efbdbf07..ae885fe67 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/links_visual_auto.png and b/.maestro/enrichedInput/screenshots/ios/links_visual_auto.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/links_visual_manual.png b/.maestro/enrichedInput/screenshots/ios/links_visual_manual.png index bb0bd58f7..bbab12b9d 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/links_visual_manual.png and b/.maestro/enrichedInput/screenshots/ios/links_visual_manual.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/list_newline_insertion.png b/.maestro/enrichedInput/screenshots/ios/list_newline_insertion.png index ea1bdc616..23dde0f10 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/list_newline_insertion.png and b/.maestro/enrichedInput/screenshots/ios/list_newline_insertion.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/mention_parsing_single_quoted_attributes.png b/.maestro/enrichedInput/screenshots/ios/mention_parsing_single_quoted_attributes.png index 8933d2de9..433116806 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/mention_parsing_single_quoted_attributes.png and b/.maestro/enrichedInput/screenshots/ios/mention_parsing_single_quoted_attributes.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_1.png b/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_1.png index 7f0cfabe9..59976788b 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_1.png and b/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_1.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_2.png b/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_2.png index a32731ece..56543b8a5 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_2.png and b/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_2.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_3.png b/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_3.png index b0c1a44ca..0f7eb9c11 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_3.png and b/.maestro/enrichedInput/screenshots/ios/mention_popup_closing_on_cursor_travel_3.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_deleting_second_line.png b/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_deleting_second_line.png index d72a13061..67c0e9664 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_deleting_second_line.png and b/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_deleting_second_line.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_emptying_second_line.png b/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_emptying_second_line.png index 431d95210..c4564e363 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_emptying_second_line.png and b/.maestro/enrichedInput/screenshots/ios/ordered_list_renumbering_after_emptying_second_line.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_style_after_removal.png b/.maestro/enrichedInput/screenshots/ios/paragraph_style_after_removal.png index 8bf9c8233..6f7a1ba7c 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_style_after_removal.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_style_after_removal.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_style_toggle.png b/.maestro/enrichedInput/screenshots/ios/paragraph_style_toggle.png index 7c2dbefc8..bb568d634 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_style_toggle.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_style_toggle.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_alignment.png b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_alignment.png index 28f837a59..9e52c64b5 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_alignment.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_alignment.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_blocks.png b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_blocks.png index 4b7ff996e..41377403d 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_blocks.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_blocks.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_headings.png b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_headings.png index 4aeb94c42..8f4bfe57f 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_headings.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_headings.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_lists.png b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_lists.png index 2bee088d8..8acceb4a0 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_lists.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_lists.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_no_crash.png b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_no_crash.png index c54bd5738..6a15e587f 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/paragraph_styles_no_crash.png and b/.maestro/enrichedInput/screenshots/ios/paragraph_styles_no_crash.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_bottom.png b/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_bottom.png index 09b5ec7eb..5d1413b6a 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_bottom.png and b/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_bottom.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_top.png b/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_top.png index 1ef3751a7..ce1bc9584 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_top.png and b/.maestro/enrichedInput/screenshots/ios/scroll_after_typing_long_content_top.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_bottom.png b/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_bottom.png index 96087f395..86d569b7e 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_bottom.png and b/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_bottom.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_top.png b/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_top.png index 241461ace..541b646ca 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_top.png and b/.maestro/enrichedInput/screenshots/ios/scrolling_paragraph_styles_top.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_bottom.png b/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_bottom.png index 09b5ec7eb..5d1413b6a 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_bottom.png and b/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_bottom.png differ diff --git a/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_top.png b/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_top.png index 1ef3751a7..ce1bc9584 100644 Binary files a/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_top.png and b/.maestro/enrichedInput/screenshots/ios/scrolling_set_value_top.png differ diff --git a/.maestro/enrichedInput/subflows/capture_or_assert_fullscreen_screenshot.yaml b/.maestro/enrichedInput/subflows/capture_or_assert_fullscreen_screenshot.yaml index f51d04b5a..fd8bc5692 100644 --- a/.maestro/enrichedInput/subflows/capture_or_assert_fullscreen_screenshot.yaml +++ b/.maestro/enrichedInput/subflows/capture_or_assert_fullscreen_screenshot.yaml @@ -3,6 +3,14 @@ appId: swmansion.enriched.example - tapOn: id: 'blur-button' +- waitForAnimationToEnd + +# Force a delay to ensure the selection cursor is invisible +- extendedWaitUntil: + visible: 'fake_element_to_force_delay' + optional: true + timeout: 1000 + - runFlow: file: '../../subflows/capture_or_assert_screenshot.yaml' env: diff --git a/.maestro/enrichedInput/subflows/capture_or_assert_screenshot.yaml b/.maestro/enrichedInput/subflows/capture_or_assert_screenshot.yaml index ea7b9e800..596e99b5a 100644 --- a/.maestro/enrichedInput/subflows/capture_or_assert_screenshot.yaml +++ b/.maestro/enrichedInput/subflows/capture_or_assert_screenshot.yaml @@ -3,6 +3,12 @@ appId: swmansion.enriched.example - tapOn: id: 'blur-button' +# Force a delay to ensure the selection cursor is invisible +- extendedWaitUntil: + visible: 'fake_element_to_force_delay' + optional: true + timeout: 200 + - runFlow: file: '../../subflows/capture_or_assert_screenshot.yaml' env: diff --git a/.maestro/enrichedInput/subflows/insert_image.yaml b/.maestro/enrichedInput/subflows/insert_image.yaml index d8804279e..37127018e 100644 --- a/.maestro/enrichedInput/subflows/insert_image.yaml +++ b/.maestro/enrichedInput/subflows/insert_image.yaml @@ -1,20 +1,19 @@ appId: swmansion.enriched.example --- - - tapOn: - id: "toolbar-image" + id: 'toolbar-image' - waitForAnimationToEnd - extendedWaitUntil: visible: - id: "image-modal-submit-button" + id: 'image-modal-submit-button' timeout: 10000 - addMedia: - - "../../assets/sample_image.jpg" + - '../../assets/sample_image.jpg' - tapOn: - id: "image-modal-submit-button" + id: 'image-modal-submit-button' - runFlow: - file: "pick_first_image.yaml" + file: 'pick_first_image.yaml' diff --git a/.maestro/enrichedInput/subflows/insert_link.yaml b/.maestro/enrichedInput/subflows/insert_link.yaml index 744d98514..feeffff51 100644 --- a/.maestro/enrichedInput/subflows/insert_link.yaml +++ b/.maestro/enrichedInput/subflows/insert_link.yaml @@ -13,12 +13,18 @@ appId: swmansion.enriched.example - tapOn: id: "link-modal-text-input" -- inputText: ${LINK_TEXT} +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: ${LINK_TEXT} - tapOn: id: "link-modal-url-input" -- inputText: ${LINK_URL} +- runFlow: + file: '../../subflows/input_text.yaml' + env: + TEXT: ${LINK_URL} - tapOn: id: "link-modal-submit-button" diff --git a/.maestro/enrichedInput/subflows/set_editor_value.yaml b/.maestro/enrichedInput/subflows/set_editor_value.yaml index 67b459db1..e87c5d33e 100644 --- a/.maestro/enrichedInput/subflows/set_editor_value.yaml +++ b/.maestro/enrichedInput/subflows/set_editor_value.yaml @@ -1,19 +1,26 @@ appId: swmansion.enriched.example --- - - tapOn: - id: "set-value-button" + id: 'set-value-button' - waitForAnimationToEnd - extendedWaitUntil: visible: - id: "value-modal-input" + id: 'value-modal-input' timeout: 10000 - tapOn: - id: "value-modal-input" + id: 'value-modal-input' - inputText: ${VALUE} - tapOn: - id: "value-modal-submit-button" + id: 'value-modal-submit-button' + +# Wait until the modal is gone +- extendedWaitUntil: + notVisible: + id: 'value-modal-submit-button' + timeout: 10000 + +- waitForAnimationToEnd diff --git a/.maestro/enrichedText/flows/alignment_visual.yaml b/.maestro/enrichedText/flows/alignment_visual.yaml index cef9fa546..2a3384dfc 100644 --- a/.maestro/enrichedText/flows/alignment_visual.yaml +++ b/.maestro/enrichedText/flows/alignment_visual.yaml @@ -12,17 +12,7 @@ appId: swmansion.enriched.example - runFlow: file: '../subflows/set_enriched_text_value.yaml' env: - VALUE: > - -Left aligned
-Centre aligned
-Right aligned
-Left aligned
Centre aligned
Right aligned
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+ VALUE: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
' # numberOfLines: all - runFlow: diff --git a/.maestro/enrichedText/flows/empty_list_elements_display.yaml b/.maestro/enrichedText/flows/empty_list_elements_display.yaml index d0a23a8bd..319d8833c 100644 --- a/.maestro/enrichedText/flows/empty_list_elements_display.yaml +++ b/.maestro/enrichedText/flows/empty_list_elements_display.yaml @@ -12,24 +12,7 @@ appId: swmansion.enriched.example - runFlow: file: '../subflows/set_enriched_text_value.yaml' env: - VALUE: > - -Example
-Text
-Example
Text
Plain text
-Bold Italic Underline Strike Code
Combined
Plain text
Bold Italic Underline Strike Code
Combined
Code block
---Blockquote
-
Code block
Blockquote