diff --git a/.github/actions/create-native-bundle/action.yml b/.github/actions/create-native-bundle/action.yml index 342e58cb2..91dd7f185 100644 --- a/.github/actions/create-native-bundle/action.yml +++ b/.github/actions/create-native-bundle/action.yml @@ -31,7 +31,7 @@ runs: mkdir -p ${{ inputs.platform }}/assets cd Native-Mobile-Resources-main/deployment/native && \ /tmp/mxbuild/modeler/tools/node/linux-x64/node \ - /tmp/mxbuild/modeler/tools/node/node_modules/react-native/local-cli/cli.js \ + /tmp/mxbuild/modeler/tools/node/node_modules/react-native/cli.js \ bundle --verbose --platform ${{ inputs.platform }} --dev false \ --config "$PWD/metro.config.js" \ --bundle-output $GITHUB_WORKSPACE/${{ inputs.platform }}/index.${{ inputs.platform }}.bundle \ diff --git a/.github/actions/start-runtime/action.yml b/.github/actions/start-runtime/action.yml index 21ba5c9a2..5c1e5f904 100644 --- a/.github/actions/start-runtime/action.yml +++ b/.github/actions/start-runtime/action.yml @@ -17,12 +17,12 @@ runs: - name: "Install Python dependencies" run: pip install pyaml httplib2 shell: bash - - name: "Setup Java 11" + - name: "Setup Java 21" id: setup-java - uses: actions/setup-java@v3.10.0 + uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 #v4 with: distribution: "temurin" - java-version: "11" + java-version: "21" - name: "Extract deployment package" run: | mkdir project @@ -50,4 +50,4 @@ runs: shell: bash - name: "Start mxruntime" run: bin/m2ee -c ${{ github.workspace }}/project/m2ee-native.yml --verbose --yolo start - shell: bash \ No newline at end of file + shell: bash diff --git a/.github/scripts/mxbuild.Dockerfile b/.github/scripts/mxbuild.Dockerfile index 3f158b619..04b5da60e 100644 --- a/.github/scripts/mxbuild.Dockerfile +++ b/.github/scripts/mxbuild.Dockerfile @@ -2,30 +2,31 @@ FROM mcr.microsoft.com/dotnet/runtime:8.0 ARG MENDIX_VERSION RUN \ - echo "Installing Java 17..." && \ + echo "Installing Java 21..." && \ apt-get -qq update && \ apt-get -qq install -y wget libgdiplus && \ - wget -q https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz -O /tmp/openjdk.tar.gz && \ + wget -q https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz -O /tmp/openjdk.tar.gz || { echo "Failed to download Java 21"; exit 1; } && \ mkdir -p /usr/lib/jvm && \ - tar xfz /tmp/openjdk.tar.gz --directory /usr/lib/jvm && \ - mv /usr/lib/jvm/jdk-17.0.2 /usr/lib/jvm/java-17-openjdk && \ - rm /tmp/openjdk.tar.gz + tar xfz /tmp/openjdk.tar.gz --directory /usr/lib/jvm || { echo "Failed to extract Java 21"; exit 1; } && \ + ls /usr/lib/jvm && \ + mv /usr/lib/jvm/jdk-21* /usr/lib/jvm/java-21-openjdk && \ + rm /tmp/openjdk.tar.gz RUN \ echo "Downloading mxbuild ${MENDIX_VERSION}..." && \ - wget -q https://cdn.mendix.com/runtime/mxbuild-${MENDIX_VERSION}.tar.gz -O /tmp/mxbuild.tar.gz && \ + wget -q https://cdn.mendix.com/runtime/mxbuild-${MENDIX_VERSION}.tar.gz -O /tmp/mxbuild.tar.gz || { echo "Failed to download mxbuild"; exit 1; } && \ mkdir /tmp/mxbuild && \ - tar xfz /tmp/mxbuild.tar.gz --directory /tmp/mxbuild && \ - rm /tmp/mxbuild.tar.gz + tar xfz /tmp/mxbuild.tar.gz --directory /tmp/mxbuild || { echo "Failed to extract mxbuild"; exit 1; } && \ + rm /tmp/mxbuild.tar.gz RUN \ apt-get -qq remove -y wget && \ - apt-get clean + apt-get clean RUN \ echo "#!/bin/bash -x" >/bin/mxbuild && \ - echo "dotnet /tmp/mxbuild/modeler/mxbuild.dll --java-home=/usr/lib/jvm/java-17-openjdk --java-exe-path=/usr/lib/jvm/java-17-openjdk/bin/java \$@" >>/bin/mxbuild && \ - chmod +x /bin/mxbuild + echo "dotnet /tmp/mxbuild/modeler/mxbuild.dll --java-home=/usr/lib/jvm/java-21-openjdk --java-exe-path=/usr/lib/jvm/java-21-openjdk/bin/java \$@" >>/bin/mxbuild && \ + chmod +x /bin/mxbuild RUN \ echo "#!/bin/bash -x" >/bin/mx && \ diff --git a/.github/workflows/NativeAutomatedTestsAndroid.yml b/.github/workflows/NativeAutomatedTestsAndroid.yml index cde375292..f87268a35 100644 --- a/.github/workflows/NativeAutomatedTestsAndroid.yml +++ b/.github/workflows/NativeAutomatedTestsAndroid.yml @@ -20,7 +20,7 @@ jobs: steps: # - name: "Checking changed files" # id: files - # uses: softprops/diffset@v1 + # uses: softprops/diffset@d5947696689a571f7a984a52505e2649eead5c22 # v1 # if: # github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == # github.repository @@ -49,7 +49,7 @@ jobs: id: yarn-cache-dir-path run: echo "dir=$(yarn config get cacheFolder)" >> ${{ runner.os == 'Windows' && '$env:GITHUB_ENV' || '$GITHUB_ENV' }} - name: "Defining cache" - uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed # v2 + uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4 env: cache-name: cache-node-modules with: diff --git a/.github/workflows/NativePipeline.yml b/.github/workflows/NativePipeline.yml index 0214a0856..3e5f78e73 100644 --- a/.github/workflows/NativePipeline.yml +++ b/.github/workflows/NativePipeline.yml @@ -42,10 +42,10 @@ on: - line-chart-native - listview-swipe-native - maps-native - - notifications-native - pie-doughnut-chart-native - popup-menu-native - progress-bar-native + - progress-circle-native - qr-code-native - radio-buttons-native - range-slider-native @@ -59,8 +59,9 @@ on: - video-player-native - web-view-native - pull_request: - # branches: [master] +# Disable trigger on every push to pull request for now +# pull_request: +# # branches: [master] permissions: packages: write @@ -70,24 +71,49 @@ jobs: runs-on: ubuntu-latest outputs: scope: ${{ steps.scope.outputs.scope }} + widgets: ${{ steps.scope.outputs.widgets }} steps: + - name: "Check out code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + - name: "Determine scope" id: scope run: | - if [ -n "${{ github.event.inputs.workspace }}" ] && [ "${{ github.event.inputs.workspace }}" != "*-native" ]; then - selected_workspaces=$(echo "${{ github.event.inputs.workspace }}" | sed 's/,/ /g') - echo "scope=--all --include '${selected_workspaces}'" >> $GITHUB_OUTPUT + if [ "${{ github.event_name }}" == "pull_request" ]; then + changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.sha }}) + selected_workspaces="" + for file in $changed_files; do + if [[ $file == packages/pluggableWidgets/* ]]; then + widget=$(echo $file | cut -d'/' -f3) + if [[ ! $selected_workspaces =~ $widget ]]; then + selected_workspaces="$selected_workspaces $widget" + fi + fi + done + if [[ -n "$selected_workspaces" ]]; then + echo "scope=--all --include '$selected_workspaces'" >> $GITHUB_OUTPUT + echo "widgets=[\"$selected_workspaces\"]" >> $GITHUB_OUTPUT + else + widgets='["accordion-native","activity-indicator-native","animation-native","app-events-native","background-gradient-native","background-image-native","badge-native","bar-chart-native","barcode-scanner-native","bottom-sheet-native","carousel-native","color-picker-native","column-chart-native","feedback-native","floating-action-button-native","gallery-native","gallery-text-filter-native","image-native","intro-screen-native","line-chart-native","listview-swipe-native","maps-native","pie-doughnut-chart-native","popup-menu-native","progress-bar-native","progress-circle-native","qr-code-native","radio-buttons-native","range-slider-native","rating-native","repeater-native","safe-area-view-native","signature-native","slider-native","switch-native","toggle-buttons-native","video-player-native","web-view-native"]' + echo "scope=--all --include '*-native'" >> $GITHUB_OUTPUT + echo "widgets=${widgets}" >> $GITHUB_OUTPUT + fi else - if [ "${{ github.event_name }}" == "pull_request" ]; then - echo "scope=--since --include '*-native'" >> $GITHUB_OUTPUT + if [ -n "${{ github.event.inputs.workspace }}" ] && [ "${{ github.event.inputs.workspace }}" != "*-native" ]; then + selected_workspaces=$(echo "${{ github.event.inputs.workspace }}" | sed 's/,/ /g') + echo "scope=--all --include '${selected_workspaces}'" >> $GITHUB_OUTPUT + echo "widgets=[\"${{ github.event.inputs.workspace }}\"]" >> $GITHUB_OUTPUT else - echo "scope=--all--include '*-native'" >> $GITHUB_OUTPUT + widgets='["accordion-native","activity-indicator-native","animation-native","app-events-native","background-gradient-native","background-image-native","badge-native","bar-chart-native","barcode-scanner-native","bottom-sheet-native","carousel-native","color-picker-native","column-chart-native","feedback-native","floating-action-button-native","gallery-native","gallery-text-filter-native","image-native","intro-screen-native","line-chart-native","listview-swipe-native","maps-native","pie-doughnut-chart-native","popup-menu-native","progress-bar-native","progress-circle-native","qr-code-native","radio-buttons-native","range-slider-native","rating-native","repeater-native","safe-area-view-native","signature-native","slider-native","switch-native","toggle-buttons-native","video-player-native","web-view-native"]' + echo "scope=--all --include '*-native'" >> $GITHUB_OUTPUT + echo "widgets=${widgets}" >> $GITHUB_OUTPUT fi fi - name: "Debug Scope Output" run: | echo "Scope is: ${{ steps.scope.outputs.scope }}" + echo "Widgets are: ${{ steps.scope.outputs.widgets }}" mendix-version: runs-on: ubuntu-22.04 @@ -95,7 +121,7 @@ jobs: mendix_version: ${{ steps.set-mendix-version.outputs.MENDIX_VERSION }} steps: - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: "Get Mendix version from JSON" id: get-mendix-version uses: notiz-dev/github-action-json-property@7a701887f4b568b23eb7b78bb0fc49aaeb1b68d3 # v0.2.0 @@ -129,7 +155,7 @@ jobs: docker manifest inspect ghcr.io/mendix/native-widgets/mxbuild:${{ needs.mendix-version.outputs.mendix_version }} || EXIT_CODE=$? echo "IMAGE_MISSING=$EXIT_CODE" >> $GITHUB_ENV - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 if: ${{ env.IMAGE_MISSING != 0 }} - name: "Build mxbuild image" if: ${{ env.IMAGE_MISSING != 0 }} @@ -149,16 +175,19 @@ jobs: contents: read steps: - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: fetch-depth: 0 - name: "Set up node" - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 with: node-version-file: .nvmrc cache: yarn - name: "Install dependencies" run: yarn install --immutable + - name: "Force rebuild resources" + run: | + yarn workspaces foreach ${{ needs.scope.outputs.scope }} run build # Ensure all resources are rebuilt - name: "Unit test" run: yarn workspaces foreach ${{ needs.scope.outputs.scope }} run test - name: "Run build for development" @@ -166,7 +195,7 @@ jobs: env: NODE_OPTIONS: --max_old_space_size=6144 - name: "Upload resources artifact" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 with: name: resources path: | @@ -221,10 +250,11 @@ jobs: if compgen -G 'resources/jsActions/mobile-resources-native/*' > /dev/null; then mv -f resources/jsActions/nanoflow-actions-native/* Native-Mobile-Resources-main/javascriptsource/nanoflowcommons/actions/ fi - - name: "Build test project" - run: mxbuild -o automation.mda --loose-version-check Native-Mobile-Resources-main/NativeComponentsTestProject.mpr + - name: "Force rebuild test project" + run: | + mxbuild -o automation.mda --loose-version-check Native-Mobile-Resources-main/NativeComponentsTestProject.mpr - name: "Upload MDA" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 with: name: mda path: automation.mda @@ -238,7 +268,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} steps: - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: "Download deployment package" uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: @@ -258,7 +288,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} steps: - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - name: "Download project MDA file" uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: @@ -273,13 +303,13 @@ jobs: runs-on: ubuntu-22.04 steps: - name: "Check out Native Template for Native Components Test Project" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: repository: mendix/native-template ref: ${{ github.event.inputs.nt_branch || 'master' }} path: native-template - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: path: native-widgets - name: "Download Android bundle and assets" @@ -288,11 +318,18 @@ jobs: name: android-bundle path: bundles/android - name: "Set up Node" - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 with: node-version-file: native-template/.nvmrc cache: npm cache-dependency-path: native-template/package-lock.json + - name: "Cache Android Build" + uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4 + with: + path: native-template/android/app/build + key: ${{ runner.os }}-android-build-${{ hashFiles('native-template/android/app/src/**/*.java', 'native-template/android/app/src/**/*.kt', 'native-template/android/app/build.gradle') }} + restore-keys: | + ${{ runner.os }}-android-build- - name: "Copy files to the right location" run: | mv bundles/android/index.android.bundle native-template/android/app/src/main/assets/index.android.bundle @@ -303,32 +340,42 @@ jobs: - name: "Install dependencies" working-directory: native-template run: npm i - - name: "Setup JDK 17" - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 + - name: "Setup JDK " + uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 #v4 with: - java-version: 17 + java-version: 21 distribution: temurin cache: gradle + - name: "Build Android app" working-directory: native-template/android - run: ./gradlew assembleAppstoreDebug assembleAppstoreDebugAndroidTest + run: | + ./gradlew assembleAppstoreDebug assembleAppstoreDebugAndroidTest + if [ $? -ne 0 ]; then + echo "Build failed!" + exit 1 + fi + - name: "List APK files" + run: | + echo "Listing APK files in the output directory:" + ls -R native-template/android/app/build/outputs/apk/ - name: "Archive Android app" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 with: name: android-app path: native-template/android/app/build/outputs/apk/**/*.apk ios-app: needs: [ios-bundle] - runs-on: macos-12 + runs-on: macos-13 steps: - name: "Check out Native Template for Native Components Test Project" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: repository: mendix/native-template ref: ${{ github.event.inputs.nt_branch || 'master' }} path: native-template - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: path: native-widgets - name: "Download iOS bundle and assets" @@ -337,11 +384,18 @@ jobs: name: ios-bundle path: bundles/ios - name: "Set up Node" - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 with: node-version-file: native-template/.nvmrc cache: npm cache-dependency-path: native-template/package-lock.json + - name: "Cache iOS Build" + uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4 + with: + path: native-template/ios/build + key: ${{ runner.os }}-ios-build-${{ hashFiles('native-template/ios/**/*.swift', 'native-template/ios/**/*.h', 'native-template/ios/Podfile.lock') }} + restore-keys: | + ${{ runner.os }}-ios-build- - name: "Copy files to the right location" run: | mv bundles/ios/index.ios.bundle native-template/ios/Bundle/index.ios.bundle @@ -353,7 +407,7 @@ jobs: run: npm i - name: "Setup Pods cache" - uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed # v2 + uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4 with: path: native-template/Pods key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }} @@ -366,50 +420,25 @@ jobs: working-directory: native-template/ios run: xcodebuild -workspace NativeTemplate.xcworkspace -scheme nativeTemplate -configuration Debug -sdk iphonesimulator -derivedDataPath build ONLY_ACTIVE_ARCH=YES VALID_ARCHS="i386 x86_64" - name: "Archive iOS app" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 with: name: ios-app path: native-template/ios/build/Build/Products/**/*.app - android-avd: - runs-on: macos-12 - steps: - - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 - - name: "Setup AVD cache" - uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed # v2 - id: avd-cache - with: - path: | - /Users/runner/.android/avd/* - /Users/runner/.android/adb* - /Users/runner/Library/Android/sdk/system-images/**/* - key: pixel_30_x86_64_default_3core_and_system_images - - name: "Create AVD and generate snapshot for caching" - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2 # v2.30.1 - with: - api-level: 30 - target: default - arch: x86_64 - profile: pixel - cores: 3 - ram-size: 4096M - heap-size: 512M - avd-name: NATIVE_pixel_30 - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - script: echo "AVD created" + android-tests: - needs: [scope, mendix-version, project, android-app, android-avd] - runs-on: macos-12 + needs: [scope, mendix-version, project, android-app] + runs-on: ubuntu-22.04 + strategy: + matrix: + widget: ${{ fromJson(needs.scope.outputs.widgets) }} + fail-fast: false steps: - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: fetch-depth: 0 - name: "Set up node" - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 with: node-version-file: .nvmrc cache: yarn @@ -419,148 +448,279 @@ jobs: uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: mda - - name: "Start runtime" - uses: ./.github/actions/start-runtime - with: - mda-file: automation.mda - mendix-version: ${{ needs.mendix-version.outputs.mendix_version }} + + # USED ONLY FOR TESTING PURPOSE - TO SKIP APP BUILD PART AND DOWNLOAD FROM SPECIFIC RUN + # - name: "Install GitHub CLI" + # run: | + # curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg + # sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg + # echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null + # sudo apt update + # sudo apt install gh + # - name: "Authenticate GitHub CLI" + # run: | + # unset GITHUB_TOKEN + # echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token + # - name: "Fetch artifacts from run 676" + # id: fetch-artifacts + # run: | + # artifacts_url=$(gh api "repos/${{ github.repository }}/actions/runs/13453887084/artifacts" --jq '.artifacts[] | select(.name == "android-app") | .archive_download_url') + # echo "Artifacts URL: $artifacts_url" + # echo "artifacts_url=$artifacts_url" >> $GITHUB_ENV + # - name: "Download Android app" + # if: env.artifacts_url != '' + # run: | + # if [ -z "$artifacts_url" ]; then + # echo "No artifacts URL found." + # exit 1 + # fi + # curl -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o android-app.zip "$artifacts_url" + # unzip android-app.zip -d android-app + - name: "Download Android app" uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: android-app path: android-app - - name: "Move android apps to correct location" - run: | - mkdir -p detox/apps - find android-app -type f -iname "*.apk" -exec mv {} detox/apps/ \; - - name: "Setup AVD cache" - uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed # v2 - id: avd-cache + + - name: "Start runtime" + uses: ./.github/actions/start-runtime with: - path: | - /Users/runner/.android/avd/* - /Users/runner/.android/adb* - /Users/runner/Library/Android/sdk/system-images/**/* - key: pixel_30_x86_64_default_3core_and_system_images - - name: "Run tests" - uses: reactivecircus/android-emulator-runner@6b0df4b0efb23bb0ec63d881db79aefbc976e4b2 # v2.30.1 + mda-file: automation.mda + mendix-version: ${{ needs.mendix-version.outputs.mendix_version }} + + - name: "Install Maestro" + run: | + mkdir -p $HOME/.local/bin + curl -L "https://github.com/mobile-dev-inc/maestro/releases/latest/download/maestro.zip" -o maestro.zip + unzip maestro.zip -d $HOME/.local/bin + chmod +x $HOME/.local/bin/maestro/bin/maestro + echo "$HOME/.local/bin" >> $GITHUB_PATH + - name: Verify maestro + run: $HOME/.local/bin/maestro/bin/maestro --version + - name: Set up Android SDK + run: echo "ANDROID_HOME=$ANDROID_SDK_ROOT" >> $GITHUB_ENV + + - 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: "Run the android tests" + uses: reactivecircus/android-emulator-runner@62dbb605bba737720e10b196cb4220d374026a6d # v2.0.0 with: api-level: 30 - target: default + target: google_apis arch: x86_64 profile: pixel - cores: 3 - ram-size: 4096M - heap-size: 512M - avd-name: NATIVE_pixel_30 - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + emulator-options: "-no-window -gpu swiftshader_indirect -no-boot-anim -no-snapshot -memory 4096 -cores 4" disable-animations: true script: | - adb shell "rm -fr /data/local/tmp/detox" - adb shell "mkdir -p /data/local/tmp/detox" - adb push "/Users/runner/work/native-widgets/native-widgets/detox/apps/app-appstore-debug.apk" "/data/local/tmp/detox/Application.apk" - adb push "/Users/runner/work/native-widgets/native-widgets/detox/apps/app-appstore-debug-androidTest.apk" "/data/local/tmp/detox/Test.apk" - adb shell pm install -r -g -t /data/local/tmp/detox/Application.apk 2>/dev/null - adb shell pm install -r -g -t /data/local/tmp/detox/Test.apk 2>/dev/null - yarn workspaces foreach ${{ needs.scope.outputs.scope }} run test:e2e:android + chmod +x maestro/helpers/prepare_android.sh + chmod +x maestro/run_maestro_tests.sh + bash maestro/helpers/prepare_android.sh + bash maestro/run_maestro_tests.sh android "${{ matrix.widget }}" + - name: "Archive runtime logs" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 if: always() with: - name: android-runtime-logs + name: android-runtime-logs-${{ matrix.widget }} path: log/*.log if-no-files-found: ignore - - name: "Archive test screenshot diff results" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - if: failure() + - name: "Archive test screenshots" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 + if: always() with: - name: android-screenshot-results - path: | - ${{ github.workspace }}/packages/**/e2e/images/diffs/**/*.png - ${{ github.workspace }}/packages/**/e2e/images/actual/**/*.png + name: android-screenshots-${{ matrix.widget }} + path: ${{ github.workspace }}/maestro/images/actual/android/**/*.png if-no-files-found: ignore - name: "Archive artifacts" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 if: always() with: - name: android-artifacts + name: android-artifacts-${{ matrix.widget }} path: packages/pluggableWidgets/**/artifacts/ if-no-files-found: ignore + ios-tests: needs: [scope, mendix-version, project, ios-app] - runs-on: macos-12 + runs-on: macos-15 + strategy: + matrix: + widget: ${{ fromJson(needs.scope.outputs.widgets) }} + fail-fast: false steps: - name: "Check out code" - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: fetch-depth: 0 - name: "Set up node" - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 with: node-version-file: .nvmrc cache: yarn - name: "Install dependencies" - run: yarn install --immutable + run: | + yarn cache clean + yarn install --immutable - name: "Download project MDA file" uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: mda - # Used when new xCode version of simulator should be created - - name: Update Xcode - run: sudo xcode-select --switch /Applications/Xcode_14.0.1.app - - name: "Clean detox framework cache" - run: npx detox clean-framework-cache - - name: "Build detox framework cache" - run: npx detox build-framework-cache + + + # USED ONLY FOR TESTING PURPOSE - TO SKIP APP BUILD PART AND DOWNLOAD APP FROM SPECIFIC RUN + # - name: "Install GitHub CLI" + # run: | + # brew install gh + # - name: "Authenticate GitHub CLI" + # run: | + # unset GITHUB_TOKEN + # echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token + # - name: "Fetch artifacts from run 676" + # id: fetch-artifacts + # run: | + # artifacts_url=$(gh api "repos/${{ github.repository }}/actions/runs/13453887084/artifacts" --jq '.artifacts[] | select(.name == "ios-app") | .archive_download_url') + # echo "Artifacts URL: $artifacts_url" + # echo "artifacts_url=$artifacts_url" >> $GITHUB_ENV + # - name: "Download iOS app" + # if: env.artifacts_url != '' + # run: | + # if [ -z "$artifacts_url" ]; then + # echo "No artifacts URL found." + # exit 1 + # fi + # curl -L -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" -o ios-app.zip "$artifacts_url" + # unzip ios-app.zip -d ios-app + - name: "Start runtime" uses: ./.github/actions/start-runtime with: mda-file: automation.mda mendix-version: ${{ needs.mendix-version.outputs.mendix_version }} + - name: "Download iOS app" uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: name: ios-app path: ios-app - - name: "Move iOS app to correct location" + - name: Check iOS App Path + run: ls ios-app + + - name: "Verify Xcode CLI Tools" + run: | + if ! xcode-select --print-path; then + echo "Xcode CLI tools not set. Setting them now." + sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer + else + echo "Xcode CLI tools are already configured." + fi + + - name: "Install Maestro" run: | - mkdir -p detox/apps - find ios-app -type d -iname "*.app" -exec cp -R {} detox/apps/ \; - - name: Install Detox Dependencies + mkdir -p $HOME/.local/bin + curl -L "https://github.com/mobile-dev-inc/maestro/releases/latest/download/maestro.zip" -o maestro.zip + unzip maestro.zip -d $HOME/.local/bin + chmod +x $HOME/.local/bin/maestro/bin/maestro + echo "$HOME/.local/bin" >> $GITHUB_PATH + - name: "Verify maestro" + run: $HOME/.local/bin/maestro/bin/maestro --version + - name: "List Available Simulators" + run: xcrun simctl list devices + + - name: "Run Maestro Script" run: | - brew tap wix/brew - brew install applesimutils - - name: Check available runtimes - run: xcrun simctl list runtimes - - name: Check avialble device types - run: xcrun simctl list devicetypes - # - name: Create iOS 16.0 simulator for iPhone 14 - # run: xcrun simctl create "iPhone 14" com.apple.CoreSimulator.SimDeviceType.iPhone-14 com.apple.CoreSimulator.SimRuntime.iOS-16-0 - - name: List supported iOS devices - run: applesimutils --list - - name: "Run tests" - run: yarn workspaces foreach ${{ needs.scope.outputs.scope }} run test:e2e:ios + chmod +x maestro/helpers/prepare_ios.sh + chmod +x maestro/run_maestro_tests.sh + bash maestro/helpers/prepare_ios.sh + bash maestro/run_maestro_tests.sh ios "${{ matrix.widget }}" + - name: "Archive runtime logs" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 if: always() with: - name: ios-runtime-logs + name: ios-runtime-logs-${{ matrix.widget }} path: log/*.log if-no-files-found: ignore - - name: "Archive test screenshot diff results" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - if: failure() + - name: "Archive test screenshots" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 + if: always() with: - name: ios-screenshot-results - path: | - ${{ github.workspace }}/packages/**/e2e/images/diffs/**/*.png - ${{ github.workspace }}/packages/**/e2e/images/actual/**/*.png + name: ios-screenshots-${{ matrix.widget }} + path: ${{ github.workspace }}/maestro/images/actual/ios/**/*.png if-no-files-found: ignore - name: "Archive artifacts" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 if: always() with: - name: ios-artifacts + name: ios-artifacts-${{ matrix.widget }} path: packages/pluggableWidgets/**/artifacts/ if-no-files-found: ignore + + compare-screenshots: + needs: [scope, android-tests, ios-tests] + runs-on: ubuntu-latest + if: always() + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: "Check out code" + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + + - name: "Download Android screenshots" + run: | + widgets=$(echo '${{ needs.scope.outputs.widgets }}' | jq -r '.[]') + for widget in $widgets; do + echo "Downloading android-screenshots-${widget}" + gh run download ${{ github.run_id }} --name android-screenshots-${widget} --dir images/actual/android/ || true + ls -l images/actual/android/ + done + + - name: "Download iOS screenshots" + run: | + widgets=$(echo '${{ needs.scope.outputs.widgets }}' | jq -r '.[]') + for widget in $widgets; do + echo "Downloading ios-screenshots-${widget}" + gh run download ${{ github.run_id }} --name ios-screenshots-${widget} --dir images/actual/ios/ || true + ls -l images/actual/ios/ + done + + + - name: "Set up node" + uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4 + with: + node-version-file: .nvmrc + cache: yarn + + - name: "Install dependencies" + run: yarn install + + - name: "Compare Android screenshots" + continue-on-error: true + run: node ${{ github.workspace }}/maestro/helpers/compare_screenshots.js android + + - name: "Compare iOS screenshots" + continue-on-error: true + run: node ${{ github.workspace }}/maestro/helpers/compare_screenshots.js ios + + - name: "Archive diff results" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 + with: + name: screenshot-diffs + path: images/diffs + if-no-files-found: ignore + + - name: "Archive comparison results" + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4 + with: + name: comparison-results + path: compare_output.txt + if-no-files-found: ignore + + - name: "Fail if comparisons failed" + run: | + if [ "$ANDROID_COMPARISON_FAILED" == "true" ] || [ "$IOS_COMPARISON_FAILED" == "true" ]; then + echo "One or more comparisons failed." + exit 1 + fi \ No newline at end of file diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 9b72cf308..554ee1b75 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -41,7 +41,7 @@ jobs: id: yarn-cache-dir-path run: echo "dir=$(yarn config get cacheFolder)" >> ${{ runner.os == 'Windows' && '$env:GITHUB_ENV' || '$GITHUB_ENV' }} - name: "Defining cache" - uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed # v2 + uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4 env: cache-name: cache-node-modules with: diff --git a/configs/e2e/mendix-versions.json b/configs/e2e/mendix-versions.json index 27cfceeef..4ff48bba5 100644 --- a/configs/e2e/mendix-versions.json +++ b/configs/e2e/mendix-versions.json @@ -1,4 +1,4 @@ { - "latest": "10.18.1.55792", + "latest": "10.20.0.60519", "8": "8.18.23.62193" } diff --git a/detox/README.md b/detox/README.md deleted file mode 100644 index 639250953..000000000 --- a/detox/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Running local detox tests - -## Required software - -- Android studio -- Xcode -- Node 14 -- Java 8 - -## Setup emulators - -The devices that will be run on are defined in the top of the `detox/detox.config.js` file. -To prepare your environment for running the e2e tests (or when you changed the devices in the config file), first run `yarn setup-mobile` from the root of this package. - -## Setup developerapp - -To be able to use Detox, it is required to build an app that contains the Detox instrumentation. It is important that both the app under test with the instrumentation and the tests use a similar (preferably same) version of Detox. They need to talk to each other using the same dialect. Once they differ too much, instead of telling you these versions are not compatible, certain commands will stop working. - -Note: The below setup is only required whenever we change the detox version in package.json in `widgets-resources`. - -Steps: - -1. In the `appdev` repo, go to the `developerapp` folder. Install the version of Detox that you want to use with the `npm i -D detox@` command. -2. Run `yarn ios:clean-pod-install` in the `developerapp` dir - 1. if this fails with “CDN: trunk URL couldn't be downloaded…”, - 2. then `cd ios` & `pod repo remove trunk` - 3. then run `pod install` -3. Go to the `appdev/automated/frontend/native` folder. Run `yarn build` -4. Android files `app-detox-debug.apk` and `app-detox-debug-androidTest.apk` should be in the `appdev/developerapp/artifacts` folder. -5. iOS file `DeveloperApp.app` should be at the `appdev/developerapp/ios/build/detox/output/Build/Products/Debug-iphonesimulator/DeveloperApp.app` folder. Zip the `DeveloperApp.app` file -6. Upload the 3 files generated above at `https://www.dropbox.com/home/RnD/NativeContent/detox-apps/19.7.1`. Ensure to give rights of `Anyone with this link can view` to all the 3 files. -7. Update the scripts with new URLs at `widgets-resources/detox/scripts` -8. In `widgets-resources` root, run `yarn setup-mobile` to download the latest `developerapp` files. - -## Run or debug the tests: - -To run all the specs(from the root directory of the repository or particular native-widget): `yarn test:e2e:local:PLATFORM_NAME` - -To run one spec file(from the root directory of the repository or particular native-widget): `yarn test:e2e:local:PLATFORM_NAME FILE_NAME.spec.ts` - -Debugging(from the root directory of the particular native-widget): `yarn debug:e2e:local:PLATFORM_NAME` - -PLATFORM_NAME = `android` or `ios` - -## Troubleshooting - -`Failed to connect to websocket` - -- Make sure to disable firewalls and any other software interfering with your local network (Windows Defender, Mac Firewall, Adblockers, Network security tools) - - - Unable to Mac firewall configurations due to lack of admin rights? - - - Use `socketfilterfw` to alter firewall configuration `/usr/libexec/ApplicationFirewall/socketfilterfw` - - Helpful links: - - https://krypted.com/mac-security/command-line-firewall-management-in-os-x-10-10 - https://apple.stackexchange.com/questions/380118/how-to-debug-macos-firewall-my-application-layer-firewall-alf-is-not-logging diff --git a/detox/detox.config.js b/detox/detox.config.js deleted file mode 100644 index 5d7aa82d5..000000000 --- a/detox/detox.config.js +++ /dev/null @@ -1,84 +0,0 @@ -const ANDROID_SDK_VERSION = "30"; // Set to 30 because: https://github.com/wix/Detox/issues/3071 -const ANDROID_DEVICE_TYPE = "pixel"; -const IOS_SDK_VERSION = "16.0"; -const IOS_DEVICE_TYPE = "iPhone 14"; - -module.exports = { - ANDROID_SDK_VERSION, - ANDROID_DEVICE_TYPE, - IOS_SDK_VERSION, - IOS_DEVICE_TYPE, - "test-runner": `${__dirname}/../node_modules/.bin/jest`, - "runner-config": `${__dirname}/jest.config.js`, - skipLegacyWorkersInjection: true, - apps: { - "ios.developerapp": { - type: "ios.app", - binaryPath: `${__dirname}/apps/NativeTemplate.app` - }, - "android.developerapp": { - type: "android.apk", - binaryPath: `${__dirname}/apps/app-appstore-debug.apk`, - testBinaryPath: `${__dirname}/apps/app-appstore-debug-androidTest.apk` - } - }, - devices: { - ios: { - type: "ios.simulator", - device: { - type: IOS_DEVICE_TYPE, - os: `iOS ${IOS_SDK_VERSION}` - } - }, - android: { - type: "android.emulator", - device: { - avdName: `NATIVE_${ANDROID_DEVICE_TYPE}_${ANDROID_SDK_VERSION}` - } - } - }, - configurations: { - "ios.simulator.developerapp": { - device: "ios", - app: "ios.developerapp", - behavior: { - init: { - exposeGlobals: false, - reinstallApp: true - } - } - }, - "android.emulator.developerapp": { - device: "android", - app: "android.developerapp", - behavior: { - init: { - exposeGlobals: false, - reinstallApp: process.env.CI !== "true" - } - } - } - }, - artifacts: { - rootDir: "artifacts", - plugins: { - instruments: { enabled: false }, - log: { enabled: true }, - uiHierarchy: "enabled", - screenshot: { - enabled: true, - shouldTakeAutomaticSnapshots: true, - keepOnlyFailedTestsArtifacts: true, - takeWhen: { - testStart: true, - testDone: true, - appNotReady: true - } - }, - video: { - enabled: true, - keepOnlyFailedTestsArtifacts: true - } - } - } -}; diff --git a/detox/environment.js b/detox/environment.js deleted file mode 100644 index 9621bee99..000000000 --- a/detox/environment.js +++ /dev/null @@ -1,19 +0,0 @@ -const { DetoxCircusEnvironment, SpecReporter, WorkerAssignReporter } = require("detox/runners/jest-circus"); - -class CustomDetoxEnvironment extends DetoxCircusEnvironment { - constructor(config, context) { - super(config, context); - - // Can be safely removed, if you are content with the default value (=300000ms) - this.initTimeout = 300000; - - // This takes care of generating status logs on a per-spec basis. By default, Jest only reports at file-level. - // This is strictly optional. - this.registerListeners({ - SpecReporter, - WorkerAssignReporter - }); - } -} - -module.exports = CustomDetoxEnvironment; diff --git a/detox/jest.config.js b/detox/jest.config.js deleted file mode 100644 index 6076a33e9..000000000 --- a/detox/jest.config.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = { - preset: "ts-jest", - reporters: ["detox/runners/jest/streamlineReporter"], - rootDir: process.cwd(), - setupFilesAfterEnv: [`${__dirname}/setup.js`], - testMatch: ["/e2e/specs/**/*.spec.{js,jsx,ts,tsx}"], - testPathIgnorePatterns: ["/dist", "/node_modules"], - testEnvironment: `${__dirname}/environment`, - testRunner: "jest-circus/runner", - testTimeout: 300000, - maxWorkers: 1, - verbose: true, - transform: { - "\\.tsx?$": "ts-jest" - } -}; diff --git a/detox/scripts/helpers.js b/detox/scripts/helpers.js deleted file mode 100644 index 2af10ce3f..000000000 --- a/detox/scripts/helpers.js +++ /dev/null @@ -1,37 +0,0 @@ -const { mkdirSync, rmSync, existsSync, createWriteStream } = require("fs"); -const { join } = require("path"); -const { pipeline } = require("stream"); -const fetch = require("node-fetch"); -const { execSync } = require("child_process"); -const { promisify } = require("util"); - -async function downloadFile(url) { - const folder = join(__dirname, "..", "apps"); - const filename = url.split("/").pop().split("#")[0].split("?")[0]; - const downloadPath = join(folder, filename); - - if (!existsSync(folder)) { - mkdirSync(folder); - } - try { - await promisify(pipeline)((await fetch(url)).body, createWriteStream(downloadPath)); - return downloadPath; - } catch (e) { - if (existsSync(downloadPath)) { - rmSync(downloadPath); - } - throw new Error(`Cannot download from '${url}'.`); - } -} - -function execCommand(command, ignoreErrorContaining) { - try { - execSync(command); - } catch (error) { - if (!error.message.includes(ignoreErrorContaining)) { - throw new Error(error); - } - } -} - -module.exports = { downloadFile, execCommand }; diff --git a/detox/scripts/setup-android.js b/detox/scripts/setup-android.js deleted file mode 100644 index 7b59454e0..000000000 --- a/detox/scripts/setup-android.js +++ /dev/null @@ -1,26 +0,0 @@ -const { ANDROID_SDK_VERSION, ANDROID_DEVICE_TYPE } = require("../detox.config"); -const { downloadFile, execCommand } = require("./helpers"); - -main().catch(e => { - console.error(e); - process.exit(-1); -}); - -async function main() { - console.log("Downloading Android apps..."); - await Promise.all([ - downloadFile("https://www.dropbox.com/s/4hel4yki6vl1et5/app-detox-debug-androidTest.apk?dl=1"), - downloadFile("https://www.dropbox.com/s/qu4z1kpy8abnyr3/app-detox-debug.apk?dl=1") - ]); - - console.log(`Installing Android SDK version ${ANDROID_SDK_VERSION}...`); - execCommand(`sdkmanager 'system-images;android-${ANDROID_SDK_VERSION};google_apis;x86_64'`); - execCommand("sdkmanager --licenses"); - - console.log("Creating Android emulator..."); - execCommand( - `avdmanager -s create avd -n NATIVE_${ANDROID_DEVICE_TYPE}_${ANDROID_SDK_VERSION} -k 'system-images;android-${ANDROID_SDK_VERSION};google_apis;x86_64' -f -d '${ANDROID_DEVICE_TYPE}' -c 1000M` - ); - - console.log("Done!"); -} diff --git a/detox/scripts/setup-ios.js b/detox/scripts/setup-ios.js deleted file mode 100644 index 2dfc0b365..000000000 --- a/detox/scripts/setup-ios.js +++ /dev/null @@ -1,34 +0,0 @@ -const { exec } = require("child_process"); -const { rmSync } = require("fs"); -const { promisify } = require("util"); -const { join } = require("path"); -const { downloadFile, execCommand } = require("./helpers"); - -main().catch(e => { - console.error(e); - process.exit(-1); -}); - -async function main() { - console.log("Checking OS..."); - if (process.platform !== "darwin") { - throw new Error("iOS simulators can only run on Mac OS."); - } - - console.log("Downloading iOS app..."); - const outputPath = join(__dirname, "..", "apps"); - rmSync(join(outputPath, "DeveloperApp.app"), { recursive: true, force: true }); - const downloadPath = await downloadFile("https://www.dropbox.com/s/u7k5ho1krbkn46y/DeveloperApp.zip?dl=1"); - - console.log("Unzipping iOS app..."); - await promisify(exec)(`unzip -o ${downloadPath} -d ${outputPath}`); - rmSync(downloadPath, { force: true }); - - console.log("Installing xcode-select..."); - execCommand("xcode-select --install", "command line tools are already installed"); - - console.log("Installing simutils..."); - execCommand("brew tap wix/brew && brew install applesimutils"); - - console.log("Done!"); -} diff --git a/detox/setup.js b/detox/setup.js deleted file mode 100644 index 8aee2ac65..000000000 --- a/detox/setup.js +++ /dev/null @@ -1,49 +0,0 @@ -const { device } = require("detox"); -const config = require("./detox.config"); -const { toMatchImageSnapshot } = require("jest-image-snapshot"); -const { join, resolve } = require("path"); -const { execSync } = require("child_process"); -const { expect } = require("@jest/globals"); - -jest.retryTimes(1); - -expect.extend({ - toMatchImageSnapshot(screenshot, options = {}) { - const platform = device.getPlatform(); - let type; - let sdk; - if (platform === "ios") { - type = "iPhone"; - sdk = config.IOS_SDK_VERSION; - } else { - type = config.ANDROID_DEVICE_TYPE; - sdk = config.ANDROID_SDK_VERSION; - } - - const customSnapshotsDir = join(resolve("./"), "e2e", "images", "expected", platform, sdk, type); - const customDiffDir = join(resolve("./"), "e2e", "images", "diffs", platform, sdk, type); - const customReceivedDir = join(resolve("./"), "e2e", "images", "actual", platform, sdk, type); - - return toMatchImageSnapshot.call(this, screenshot, { - customDiffConfig: { threshold: 0.15 }, - customDiffDir, - customSnapshotsDir, - customReceivedDir, - storeReceivedOnFailure: false, - failureThreshold: 10, - failureThresholdType: "pixel", - customSnapshotIdentifier: snapshotInfo => `${snapshotInfo.currentTestName} ${snapshotInfo.counter}`, - ...options - }); - } -}); - -global.expect = expect; - -beforeAll(async () => { - if (device.getPlatform() === "android") { - const id = device.id; - execSync(`adb -s ${id} shell setprop debug.hwui.renderer skiagl`); - execSync(`adb -s ${id} reverse tcp:8080 tcp:8080`); - } -}); diff --git a/detox/src/Alert.ts b/detox/src/Alert.ts deleted file mode 100644 index cc0e0eaf8..000000000 --- a/detox/src/Alert.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { by, element, device } from "detox"; - -export function Alert() { - const iosRootMatcher = by.type("_UIAlertControllerView"); - const androidRootMatcher = by.type("com.android.internal.widget.AlertDialogLayout"); - const iosTextMatcher = by - .type("UILabel") - .withAncestor(by.type("_UIInterfaceActionGroupHeaderScrollView")) - .withAncestor(iosRootMatcher); - const iosOkButton = by - .text("OK") - .withAncestor(by.type("_UIAlertControllerActionView")) - .withAncestor(iosRootMatcher); - const androidTitleMatcher = by.type("com.android.internal.widget.DialogTitle").withAncestor(androidRootMatcher); - const androidTextMatcher = by.type("androidx.appcompat.widget.AppCompatTextView").withAncestor(androidRootMatcher); - const androidOkButton = by - .text("OK") - .withAncestor(by.type("com.android.internal.widget.ButtonBarLayout")) - .withAncestor(androidRootMatcher); - - return { - get typeElement(): Detox.NativeElement { - if (device.getPlatform() === "ios") { - return element(iosTextMatcher).atIndex(0); - } else { - return element(androidTitleMatcher).atIndex(0); - } - }, - - get messageElement(): Detox.NativeElement { - if (device.getPlatform() === "ios") { - return element(iosTextMatcher).atIndex(1); - } else { - return element(androidTextMatcher).atIndex(0); - } - }, - - async confirm(): Promise { - if (device.getPlatform() === "ios") { - await element(iosOkButton).atIndex(0).tap(); - } else { - await element(androidOkButton).atIndex(0).tap(); - } - } - }; -} diff --git a/detox/src/helpers.ts b/detox/src/helpers.ts deleted file mode 100644 index f6e3eebb8..000000000 --- a/detox/src/helpers.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { execSync } from "child_process"; -import { by, element, device, waitFor } from "detox"; -import { readFileSync } from "fs"; -import { MatchImageSnapshotOptions } from "jest-image-snapshot"; - -export async function launchApp(): Promise { - await device.launchApp({ - newInstance: true, - launchArgs: { - detoxPrintBusyIdleResources: "YES", - // Notifications - detoxURLBlacklistRegex: ".*firestore.*", - appUrl: "http://10.0.2.2:8080" - }, - // JS actions - permissions: { faceid: "YES", location: "inuse", camera: "YES", photos: "YES", notifications: "YES" } - }); - - /** - * For some reason, whenever the app restarts on iOS, the topbar is reset. - * So we need to run this command on every app launch. - * For simplicity/consistency sake, we are running it here for Android as well. - **/ - await setDemoMode(); - - await waitFor(element(by.id("$screen")).atIndex(0)) - .toBeVisible() - .withTimeout(180000); -} - -export async function sessionLogout(): Promise { - /** - * Since we have a runtime without license we are limited to 5 concurrent sessions - * For iOS, the app is reinstalled ofter which seemms to create new sessions. - * Old sessions are not cleaned up. The app contains an app event that signs out the session - * when the app is put to background and foreground again. - **/ - if (device.getPlatform() === "ios") { - await device.sendToHome(); - await device.launchApp({ newInstance: false }); - } -} - -async function setDemoMode(): Promise { - if (device.getPlatform() === "ios") { - const type = device.name.substring(device.name.indexOf("(") + 1, device.name.lastIndexOf(")")); - execSync( - `xcrun simctl status_bar "${type}" override --time "12:00" --batteryState charged --batteryLevel 100 --wifiBars 3` - ); - } else { - const id = device.id; - // enter demo mode - execSync(`adb -s ${id} shell settings put global sysui_demo_allowed 1`); - // display time 12:00 - execSync(`adb -s ${id} shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1200`); - // Display full mobile data with 4g type and no wifi - execSync( - `adb -s ${id} shell am broadcast -a com.android.systemui.demo -e command network -e mobile show -e level 4 -e datatype 4g -e wifi false` - ); - // Hide notifications - execSync( - `adb -s ${id} shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false` - ); - // Show full battery but not in charging state - execSync( - `adb -s ${id} shell am broadcast -a com.android.systemui.demo -e command battery -e plugged false -e level 100` - ); - } -} - -export async function expectToMatchScreenshot( - nativeElement?: Detox.NativeElement, - options?: MatchImageSnapshotOptions -): Promise { - let screenshotPath: string; - if (nativeElement) { - screenshotPath = await nativeElement.takeScreenshot("screenshot"); - } else { - if (device.getPlatform() === "android") { - nativeElement = element(by.type("android.widget.FrameLayout")).atIndex(0); - screenshotPath = await nativeElement.takeScreenshot("screenshot"); - } else { - screenshotPath = await device.takeScreenshot("screenshot"); - } - } - expect(readFileSync(screenshotPath)).toMatchImageSnapshot(options); -} - -export async function setText(element: Detox.NativeElement, text: string): Promise { - await element.clearText(); - await element.typeText(text); - await element.tapReturnKey(); -} - -export async function tapBottomBarItem(caption: "Widgets" | "Actions" | "Commons" | "Deep Link"): Promise { - await element(by.id(`bottomBarItem$${caption}`)).tap(); -} - -export async function tapMenuItem(caption: string): Promise { - const firstLetter = caption.split("")[0].toUpperCase(); - await element(by.text(firstLetter)).atIndex(0).tap(); - await element(by.text(caption)).tap(); -} - -export async function sleep(time: number): Promise { - return new Promise(resolve => setTimeout(resolve, time)); -} diff --git a/detox/tsconfig.json b/detox/tsconfig.json deleted file mode 100644 index 6d62e40a7..000000000 --- a/detox/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@mendix/pluggable-widgets-tools/configs/tsconfig.base", - "baseUrl": "./", - "include": ["./src", "./typings"], - "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] - } -} diff --git a/maestro/Precondition.yaml b/maestro/Precondition.yaml new file mode 100644 index 000000000..cb09b2007 --- /dev/null +++ b/maestro/Precondition.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- retry: + maxRetries: 3 + commands: + - launchApp: + clearState: true + permissions: + camera: allow + notifications: allow + - extendedWaitUntil: + visible: "Widgets menu" + timeout: 240000 # A long timeout since app startup is quite unstable due to resources when executed on Github runners diff --git a/maestro/helpers/compare_screenshots.js b/maestro/helpers/compare_screenshots.js new file mode 100644 index 000000000..99b0e2c32 --- /dev/null +++ b/maestro/helpers/compare_screenshots.js @@ -0,0 +1,98 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/explicit-function-return-type */ +/* eslint-disable prettier/prettier */ +const fs = require('fs'); +const path = require('path'); +const { PNG } = require('pngjs'); +const pixelmatch = require('pixelmatch'); +const core = require('@actions/core'); + +const platform = process.argv[2]; +const actualDir = path.join(__dirname, `../../images/actual/${platform}`); +const expectedDir = path.join(__dirname, `../../maestro/images/expected/${platform}`); +const diffDir = path.join(__dirname, `../../images/diffs/${platform}-${process.env.GITHUB_RUN_ID}`); + +if (!fs.existsSync(diffDir)) { + fs.mkdirSync(diffDir, { recursive: true }); +} + +function isIgnored(x, y, ignoredAreas) { + return ignoredAreas.some(area => + x >= area.x && x < area.x + area.width && y >= area.y && y < area.y + area.height + ); +} + +function applyIgnoredAreas(img, ignoredAreas) { + const { width, height } = img; + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + if (isIgnored(x, y, ignoredAreas)) { + const idx = (width * y + x) << 2; + img.data[idx] = 0; // R + img.data[idx + 1] = 0; // G + img.data[idx + 2] = 0; // B + img.data[idx + 3] = 0; // A (transparent) + } + } + } +} + +const failedComparisons = []; + +fs.readdirSync(actualDir).forEach(file => { + const actualPath = path.join(actualDir, file); + const expectedPath = path.join(expectedDir, file); + const diffPath = path.join(diffDir, `diff_${file}`); + + if (fs.existsSync(expectedPath)) { + const actualImg = PNG.sync.read(fs.readFileSync(actualPath)); + const expectedImg = PNG.sync.read(fs.readFileSync(expectedPath)); + const { width, height } = actualImg; + const diff = new PNG({ width, height }); + + let ignoredAreas = []; + if (platform === 'ios') { + ignoredAreas = [ + { x: 0, y: height - 40, width, height: 40 } // Ignore bottom 40 pixels where is Home Indicator on iOS + ]; + } else if (platform === 'android') { + ignoredAreas = [ + { x: 0, y: 0, width, height: 50 } // Ignore top 40 pixels on Android + ]; + } + + applyIgnoredAreas(actualImg, ignoredAreas); + applyIgnoredAreas(expectedImg, ignoredAreas); + + const numDiffPixels = pixelmatch(actualImg.data, expectedImg.data, diff.data, width, height, { + threshold: 0.1, + includeAA: false, + diffMask: true + }); + + const pixelTolerance = 50; + + if (numDiffPixels > pixelTolerance) { + fs.writeFileSync(diffPath, PNG.sync.write(diff)); + failedComparisons.push(file); + console.log(`❌ Comparison failed for ${file}`); + } else { + fs.appendFileSync(path.join(__dirname, '../../compare_output.txt'), `✅ Comparison passed for ${file}\n`); + console.log(`✅ Comparison passed for ${file}`); + } + } else { + console.log(`⚠️ Expected file not found for ${file}`); + } +}); + +if (failedComparisons.length > 0) { + fs.appendFileSync(path.join(__dirname, '../../compare_output.txt'), `❌ Failed Comparisons:\n`); + failedComparisons.forEach(file => { + fs.appendFileSync(path.join(__dirname, '../../compare_output.txt'), ` - ${file}\n`); + }); + console.log(`❌ Failed Comparisons: ${failedComparisons.join(', ')}`); + core.exportVariable(`${platform.toUpperCase()}_COMPARISON_FAILED`, 'true'); +} else { + fs.appendFileSync(path.join(__dirname, '../../compare_output.txt'), 'All comparisons passed!\n'); + console.log('All comparisons passed!'); +} \ No newline at end of file diff --git a/maestro/helpers/helpers.sh b/maestro/helpers/helpers.sh new file mode 100644 index 000000000..742855f5c --- /dev/null +++ b/maestro/helpers/helpers.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +MAX_RETRIES=3 +RETRY_DELAY=10 + +# Function to restart the iOS simulator +restart_simulator() { + echo "🔄 Restarting iOS Simulator..." + xcrun simctl shutdown "$IOS_DEVICE" + sleep 10 + bash ./maestro/helpers/prepare_ios.sh +} + +# Function to set the status bar on the Android emulator +set_status_bar() { + echo "Setting status bar on Android Emulator..." + adb root + adb shell "date -u 11010000" # Set time to 11:01 - due to some bug it always sets to 12:00 + adb shell svc wifi enable # Enable Wi-Fi + adb shell svc data enable # Enable mobile data + adb shell dumpsys battery set level 100 # Set battery level to 100% + adb shell dumpsys battery set status 2 # Set battery status to charging + adb reverse tcp:8080 tcp:8080 # Reverse port 8080 + + # Verify the status bar settings + retries=0 + max_retries=5 + while [ $retries -lt $max_retries ]; do + current_time=$(adb shell "date +%H:%M") + if [ "$current_time" == "00:00" ]; then + echo "Status bar set successfully." + break + else + echo "Retrying status bar settings..." + adb shell "date -u 11010000" + sleep 2 + retries=$((retries + 1)) + fi + done + + if [ $retries -eq $max_retries ]; then + echo "Failed to set status bar after $max_retries attempts." + fi +} + +# Function to ensure the emulator is ready +ensure_emulator_ready() { + boot_completed=false + while [ "$boot_completed" == "false" ]; do + boot_completed=$(adb -s emulator-5554 shell getprop sys.boot_completed 2>/dev/null) + if [ "$boot_completed" == "1" ]; then + echo "Emulator is ready." + break + else + echo "Waiting for emulator to be ready..." + sleep 5 + fi + done +} + +# Function to run tests +run_tests() { + local test_files=("$@") + for yaml_test_file in "${test_files[@]}"; do + echo "🧪 Testing: $yaml_test_file" + if [ "$PLATFORM" == "android" ]; then + ensure_emulator_ready + set_status_bar + fi + if $HOME/.local/bin/maestro/bin/maestro test --env APP_ID=$APP_ID --env PLATFORM=$PLATFORM --env MAESTRO_DRIVER_STARTUP_TIMEOUT=300000 "$yaml_test_file"; then + echo "✅ Test passed: $yaml_test_file" + passed_tests+=("$yaml_test_file") + else + echo "❌ Test failed: $yaml_test_file" + failed_tests+=("$yaml_test_file") + fi + completed_tests=$((completed_tests + 1)) + remaining_tests=$((total_tests - completed_tests)) + echo "📊 Progress: $completed_tests/$total_tests tests completed, $remaining_tests tests remaining. ✅ ${#passed_tests[@]} passed, ❌ ${#failed_tests[@]} failed." + done +} + +# Function to rerun failed tests +rerun_failed_tests() { + local retry_failed_tests=("$@") + local total_retries=${#retry_failed_tests[@]} + local retry_count=0 + for yaml_test_file in "${retry_failed_tests[@]}"; do + retry_count=$((retry_count + 1)) + echo "🧪 Retrying test $retry_count/$total_retries: $(basename "$yaml_test_file")" + if [ "$PLATFORM" == "android" ]; then + ensure_emulator_ready + else + restart_simulator + fi + local attempt=0 + while [ $attempt -lt $MAX_RETRIES ]; do + if $HOME/.local/bin/maestro/bin/maestro test --env APP_ID=$APP_ID --env PLATFORM=$PLATFORM --env MAESTRO_DRIVER_STARTUP_TIMEOUT=300000 "$yaml_test_file"; then + echo "✅ Test passed: $yaml_test_file" + passed_tests+=("$yaml_test_file") + break + else + echo "❌ Test failed: $yaml_test_file (Attempt $((attempt + 1))/$MAX_RETRIES)" + attempt=$((attempt + 1)) + if [ $attempt -lt $MAX_RETRIES ]; then + echo "Retrying in $RETRY_DELAY seconds..." + sleep $RETRY_DELAY + else + final_failed_tests+=("$yaml_test_file") + fi + fi + done + echo "📊 Retry Progress: $retry_count/$total_retries tests completed, ${#passed_tests[@]} passed, ${#final_failed_tests[@]} failed." + done +} \ No newline at end of file diff --git a/maestro/helpers/prepare_android.sh b/maestro/helpers/prepare_android.sh new file mode 100644 index 000000000..a542b3d15 --- /dev/null +++ b/maestro/helpers/prepare_android.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +MAX_RETRIES=5 +RETRY_DELAY=10 +RETRIES=0 + +# Add a delay to ensure the emulator is fully booted +echo "Waiting for emulator to be ready..." +sleep 30 + +# Function to install the Android app on the emulator +install_android_app() { + while [ "$RETRIES" -lt "$MAX_RETRIES" ]; do + echo "Attempt $(($RETRIES + 1)) of $MAX_RETRIES: Installing APK..." + + adb install /home/runner/work/native-widgets/native-widgets/android-app/appstore/debug/app-appstore-debug.apk + + if adb shell pm list packages | grep -q "com.mendix.nativetemplate"; then + echo "App installed successfully!" + return 0 + fi + + echo "Installation failed. Retrying in $RETRY_DELAY seconds..." + RETRIES=$((RETRIES + 1)) + sleep "$RETRY_DELAY" + done + + echo "Failed to install APK after $MAX_RETRIES attempts." + return 1 +} + +# Prepare the Android emulator and install the app +install_android_app \ No newline at end of file diff --git a/maestro/helpers/prepare_ios.sh b/maestro/helpers/prepare_ios.sh new file mode 100644 index 000000000..63af57742 --- /dev/null +++ b/maestro/helpers/prepare_ios.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +start_simulator() { + echo "Starting iOS Simulator..." + xcrun simctl boot "iPhone 16" || echo "Simulator already booted" + sleep 30 + xcrun simctl bootstatus || echo "Simulator booted successfully" +} + +set_status_bar() { + echo "Setting status bar on iOS Simulator..." + xcrun simctl status_bar "iPhone 16" override --time "11:01" --wifiBars 3 --cellularBars 4 --batteryState charged --batteryLevel 100 +} + +install_ios_app() { + echo "Installing iOS app on simulator..." + xcrun simctl install booted ios-app/Debug-iphonesimulator/NativeTemplate.app +} + +verify_installed_app() { + echo "Verifying installed app..." + xcrun simctl get_app_container booted com.mendix.native.template +} + +start_simulator +set_status_bar +install_ios_app +verify_installed_app \ No newline at end of file diff --git a/maestro/images/expected/android/SafeAreaViewMaps.png b/maestro/images/expected/android/SafeAreaViewMaps.png new file mode 100644 index 000000000..ce74435d4 Binary files /dev/null and b/maestro/images/expected/android/SafeAreaViewMaps.png differ diff --git a/maestro/images/expected/android/accordion_custom.png b/maestro/images/expected/android/accordion_custom.png new file mode 100644 index 000000000..c903df935 Binary files /dev/null and b/maestro/images/expected/android/accordion_custom.png differ diff --git a/maestro/images/expected/android/accordion_multiple.png b/maestro/images/expected/android/accordion_multiple.png new file mode 100644 index 000000000..b7c9b311d Binary files /dev/null and b/maestro/images/expected/android/accordion_multiple.png differ diff --git a/maestro/images/expected/android/accordion_noncollapsible.png b/maestro/images/expected/android/accordion_noncollapsible.png new file mode 100644 index 000000000..e360fc4aa Binary files /dev/null and b/maestro/images/expected/android/accordion_noncollapsible.png differ diff --git a/maestro/images/expected/android/activity_indicator.png b/maestro/images/expected/android/activity_indicator.png new file mode 100644 index 000000000..8a1f98f16 Binary files /dev/null and b/maestro/images/expected/android/activity_indicator.png differ diff --git a/maestro/images/expected/android/animation.png b/maestro/images/expected/android/animation.png new file mode 100644 index 000000000..083fccf83 Binary files /dev/null and b/maestro/images/expected/android/animation.png differ diff --git a/maestro/images/expected/android/background_gradient.png b/maestro/images/expected/android/background_gradient.png new file mode 100644 index 000000000..b4e23ab23 Binary files /dev/null and b/maestro/images/expected/android/background_gradient.png differ diff --git a/maestro/images/expected/android/bar_chart.png b/maestro/images/expected/android/bar_chart.png new file mode 100644 index 000000000..ec30f2ad8 Binary files /dev/null and b/maestro/images/expected/android/bar_chart.png differ diff --git a/maestro/images/expected/android/bg_image_clickable_container.png b/maestro/images/expected/android/bg_image_clickable_container.png new file mode 100644 index 000000000..29df5a510 Binary files /dev/null and b/maestro/images/expected/android/bg_image_clickable_container.png differ diff --git a/maestro/images/expected/android/bg_image_conditional_visibility.png b/maestro/images/expected/android/bg_image_conditional_visibility.png new file mode 100644 index 000000000..15739fb2b Binary files /dev/null and b/maestro/images/expected/android/bg_image_conditional_visibility.png differ diff --git a/maestro/images/expected/android/bg_image_dynamic_image.png b/maestro/images/expected/android/bg_image_dynamic_image.png new file mode 100644 index 000000000..fc006da35 Binary files /dev/null and b/maestro/images/expected/android/bg_image_dynamic_image.png differ diff --git a/maestro/images/expected/android/bg_image_dynamic_svg_alert.png b/maestro/images/expected/android/bg_image_dynamic_svg_alert.png new file mode 100644 index 000000000..0d4955eb4 Binary files /dev/null and b/maestro/images/expected/android/bg_image_dynamic_svg_alert.png differ diff --git a/maestro/images/expected/android/bg_image_layout_grid.png b/maestro/images/expected/android/bg_image_layout_grid.png new file mode 100644 index 000000000..c93cdae52 Binary files /dev/null and b/maestro/images/expected/android/bg_image_layout_grid.png differ diff --git a/maestro/images/expected/android/bg_image_nested.png b/maestro/images/expected/android/bg_image_nested.png new file mode 100644 index 000000000..39a76492b Binary files /dev/null and b/maestro/images/expected/android/bg_image_nested.png differ diff --git a/maestro/images/expected/android/bg_image_static_images.png b/maestro/images/expected/android/bg_image_static_images.png new file mode 100644 index 000000000..43cd605f5 Binary files /dev/null and b/maestro/images/expected/android/bg_image_static_images.png differ diff --git a/maestro/images/expected/android/bg_image_static_svg.png b/maestro/images/expected/android/bg_image_static_svg.png new file mode 100644 index 000000000..6211aa64d Binary files /dev/null and b/maestro/images/expected/android/bg_image_static_svg.png differ diff --git a/maestro/images/expected/android/color_picker_conditional.png b/maestro/images/expected/android/color_picker_conditional.png new file mode 100644 index 000000000..85ba55942 Binary files /dev/null and b/maestro/images/expected/android/color_picker_conditional.png differ diff --git a/maestro/images/expected/android/color_picker_disabled.png b/maestro/images/expected/android/color_picker_disabled.png new file mode 100644 index 000000000..42cef315e Binary files /dev/null and b/maestro/images/expected/android/color_picker_disabled.png differ diff --git a/maestro/images/expected/android/color_picker_normal.png b/maestro/images/expected/android/color_picker_normal.png new file mode 100644 index 000000000..0ac9db465 Binary files /dev/null and b/maestro/images/expected/android/color_picker_normal.png differ diff --git a/maestro/images/expected/android/color_picker_partial.png b/maestro/images/expected/android/color_picker_partial.png new file mode 100644 index 000000000..00b780ac9 Binary files /dev/null and b/maestro/images/expected/android/color_picker_partial.png differ diff --git a/maestro/images/expected/android/column_chart.png b/maestro/images/expected/android/column_chart.png new file mode 100644 index 000000000..935316a4c Binary files /dev/null and b/maestro/images/expected/android/column_chart.png differ diff --git a/maestro/images/expected/android/doughnut_chart_custom.png b/maestro/images/expected/android/doughnut_chart_custom.png new file mode 100644 index 000000000..558009930 Binary files /dev/null and b/maestro/images/expected/android/doughnut_chart_custom.png differ diff --git a/maestro/images/expected/android/doughnut_chart_multiple_data_points.png b/maestro/images/expected/android/doughnut_chart_multiple_data_points.png new file mode 100644 index 000000000..4783cc7bb Binary files /dev/null and b/maestro/images/expected/android/doughnut_chart_multiple_data_points.png differ diff --git a/maestro/images/expected/android/floating_action_button.png b/maestro/images/expected/android/floating_action_button.png new file mode 100644 index 000000000..05750a7e6 Binary files /dev/null and b/maestro/images/expected/android/floating_action_button.png differ diff --git a/maestro/images/expected/android/image_dynamic.png b/maestro/images/expected/android/image_dynamic.png new file mode 100644 index 000000000..db7ff6c52 Binary files /dev/null and b/maestro/images/expected/android/image_dynamic.png differ diff --git a/maestro/images/expected/android/image_icon.png b/maestro/images/expected/android/image_icon.png new file mode 100644 index 000000000..c2b1bbc4a Binary files /dev/null and b/maestro/images/expected/android/image_icon.png differ diff --git a/maestro/images/expected/android/image_static.png b/maestro/images/expected/android/image_static.png new file mode 100644 index 000000000..928c3526c Binary files /dev/null and b/maestro/images/expected/android/image_static.png differ diff --git a/maestro/images/expected/android/image_url.png b/maestro/images/expected/android/image_url.png new file mode 100644 index 000000000..8423bd7ff Binary files /dev/null and b/maestro/images/expected/android/image_url.png differ diff --git a/maestro/images/expected/android/line_chart.png b/maestro/images/expected/android/line_chart.png new file mode 100644 index 000000000..0af0ab5db Binary files /dev/null and b/maestro/images/expected/android/line_chart.png differ diff --git a/maestro/images/expected/android/pie_chart_custom.png b/maestro/images/expected/android/pie_chart_custom.png new file mode 100644 index 000000000..e9926e324 Binary files /dev/null and b/maestro/images/expected/android/pie_chart_custom.png differ diff --git a/maestro/images/expected/android/pie_chart_multiple_data_points.png b/maestro/images/expected/android/pie_chart_multiple_data_points.png new file mode 100644 index 000000000..443f09b5d Binary files /dev/null and b/maestro/images/expected/android/pie_chart_multiple_data_points.png differ diff --git a/maestro/images/expected/android/progress_bar.png b/maestro/images/expected/android/progress_bar.png new file mode 100644 index 000000000..33357390c Binary files /dev/null and b/maestro/images/expected/android/progress_bar.png differ diff --git a/maestro/images/expected/android/progress_circle.png b/maestro/images/expected/android/progress_circle.png new file mode 100644 index 000000000..487f54373 Binary files /dev/null and b/maestro/images/expected/android/progress_circle.png differ diff --git a/maestro/images/expected/android/qr_code.png b/maestro/images/expected/android/qr_code.png new file mode 100644 index 000000000..7961b6323 Binary files /dev/null and b/maestro/images/expected/android/qr_code.png differ diff --git a/maestro/images/expected/android/radio_buttons.png b/maestro/images/expected/android/radio_buttons.png new file mode 100644 index 000000000..1cfdf0cb8 Binary files /dev/null and b/maestro/images/expected/android/radio_buttons.png differ diff --git a/maestro/images/expected/android/range_slider.png b/maestro/images/expected/android/range_slider.png new file mode 100644 index 000000000..5294de3dd Binary files /dev/null and b/maestro/images/expected/android/range_slider.png differ diff --git a/maestro/images/expected/android/rating.png b/maestro/images/expected/android/rating.png new file mode 100644 index 000000000..911661602 Binary files /dev/null and b/maestro/images/expected/android/rating.png differ diff --git a/maestro/images/expected/android/slider.png b/maestro/images/expected/android/slider.png new file mode 100644 index 000000000..3fb7b2c67 Binary files /dev/null and b/maestro/images/expected/android/slider.png differ diff --git a/maestro/images/expected/android/toggle_buttons.png b/maestro/images/expected/android/toggle_buttons.png new file mode 100644 index 000000000..5b56f9aee Binary files /dev/null and b/maestro/images/expected/android/toggle_buttons.png differ diff --git a/maestro/images/expected/ios/accordion_custom.png b/maestro/images/expected/ios/accordion_custom.png new file mode 100644 index 000000000..e195e96ff Binary files /dev/null and b/maestro/images/expected/ios/accordion_custom.png differ diff --git a/maestro/images/expected/ios/accordion_multiple.png b/maestro/images/expected/ios/accordion_multiple.png new file mode 100644 index 000000000..148a84b23 Binary files /dev/null and b/maestro/images/expected/ios/accordion_multiple.png differ diff --git a/maestro/images/expected/ios/accordion_noncollapsible.png b/maestro/images/expected/ios/accordion_noncollapsible.png new file mode 100644 index 000000000..dc97b6fcb Binary files /dev/null and b/maestro/images/expected/ios/accordion_noncollapsible.png differ diff --git a/maestro/images/expected/ios/accordion_on_change.png b/maestro/images/expected/ios/accordion_on_change.png new file mode 100644 index 000000000..100d75542 Binary files /dev/null and b/maestro/images/expected/ios/accordion_on_change.png differ diff --git a/maestro/images/expected/ios/activity_indicator.png b/maestro/images/expected/ios/activity_indicator.png new file mode 100644 index 000000000..49f270f6c Binary files /dev/null and b/maestro/images/expected/ios/activity_indicator.png differ diff --git a/maestro/images/expected/ios/animation.png b/maestro/images/expected/ios/animation.png new file mode 100644 index 000000000..b6d5f2fbe Binary files /dev/null and b/maestro/images/expected/ios/animation.png differ diff --git a/maestro/images/expected/ios/background_gradient.png b/maestro/images/expected/ios/background_gradient.png new file mode 100644 index 000000000..08d0eddba Binary files /dev/null and b/maestro/images/expected/ios/background_gradient.png differ diff --git a/maestro/images/expected/ios/bar_chart.png b/maestro/images/expected/ios/bar_chart.png new file mode 100644 index 000000000..f75ca5976 Binary files /dev/null and b/maestro/images/expected/ios/bar_chart.png differ diff --git a/maestro/images/expected/ios/bg_image_clickable_container.png b/maestro/images/expected/ios/bg_image_clickable_container.png new file mode 100644 index 000000000..2406aa582 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_clickable_container.png differ diff --git a/maestro/images/expected/ios/bg_image_conditional_visibility.png b/maestro/images/expected/ios/bg_image_conditional_visibility.png new file mode 100644 index 000000000..9f0f37972 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_conditional_visibility.png differ diff --git a/maestro/images/expected/ios/bg_image_dynamic_svg.png b/maestro/images/expected/ios/bg_image_dynamic_svg.png new file mode 100644 index 000000000..139f8bbf8 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_dynamic_svg.png differ diff --git a/maestro/images/expected/ios/bg_image_dynamic_svg_alert.png b/maestro/images/expected/ios/bg_image_dynamic_svg_alert.png new file mode 100644 index 000000000..04c75add6 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_dynamic_svg_alert.png differ diff --git a/maestro/images/expected/ios/bg_image_layout_grid.png b/maestro/images/expected/ios/bg_image_layout_grid.png new file mode 100644 index 000000000..88b2b9f11 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_layout_grid.png differ diff --git a/maestro/images/expected/ios/bg_image_nested.png b/maestro/images/expected/ios/bg_image_nested.png new file mode 100644 index 000000000..673316717 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_nested.png differ diff --git a/maestro/images/expected/ios/bg_image_static_images.png b/maestro/images/expected/ios/bg_image_static_images.png new file mode 100644 index 000000000..9a009da33 Binary files /dev/null and b/maestro/images/expected/ios/bg_image_static_images.png differ diff --git a/maestro/images/expected/ios/bg_image_static_svg.png b/maestro/images/expected/ios/bg_image_static_svg.png new file mode 100644 index 000000000..ae96ab01e Binary files /dev/null and b/maestro/images/expected/ios/bg_image_static_svg.png differ diff --git a/maestro/images/expected/ios/color_picker_conditional.png b/maestro/images/expected/ios/color_picker_conditional.png new file mode 100644 index 000000000..18f44b5c0 Binary files /dev/null and b/maestro/images/expected/ios/color_picker_conditional.png differ diff --git a/maestro/images/expected/ios/color_picker_disabled.png b/maestro/images/expected/ios/color_picker_disabled.png new file mode 100644 index 000000000..270a10688 Binary files /dev/null and b/maestro/images/expected/ios/color_picker_disabled.png differ diff --git a/maestro/images/expected/ios/color_picker_normal.png b/maestro/images/expected/ios/color_picker_normal.png new file mode 100644 index 000000000..c298a62f3 Binary files /dev/null and b/maestro/images/expected/ios/color_picker_normal.png differ diff --git a/maestro/images/expected/ios/color_picker_partial.png b/maestro/images/expected/ios/color_picker_partial.png new file mode 100644 index 000000000..cb0bed33a Binary files /dev/null and b/maestro/images/expected/ios/color_picker_partial.png differ diff --git a/maestro/images/expected/ios/column_chart.png b/maestro/images/expected/ios/column_chart.png new file mode 100644 index 000000000..a77138968 Binary files /dev/null and b/maestro/images/expected/ios/column_chart.png differ diff --git a/maestro/images/expected/ios/doughnut_chart_custom.png b/maestro/images/expected/ios/doughnut_chart_custom.png new file mode 100644 index 000000000..9371b7837 Binary files /dev/null and b/maestro/images/expected/ios/doughnut_chart_custom.png differ diff --git a/maestro/images/expected/ios/doughnut_chart_multiple_data_points.png b/maestro/images/expected/ios/doughnut_chart_multiple_data_points.png new file mode 100644 index 000000000..1b0835920 Binary files /dev/null and b/maestro/images/expected/ios/doughnut_chart_multiple_data_points.png differ diff --git a/maestro/images/expected/ios/floating_action_button.png b/maestro/images/expected/ios/floating_action_button.png new file mode 100644 index 000000000..44311ebe6 Binary files /dev/null and b/maestro/images/expected/ios/floating_action_button.png differ diff --git a/maestro/images/expected/ios/image_dynamic.png b/maestro/images/expected/ios/image_dynamic.png new file mode 100644 index 000000000..36fc30ac1 Binary files /dev/null and b/maestro/images/expected/ios/image_dynamic.png differ diff --git a/maestro/images/expected/ios/image_icon.png b/maestro/images/expected/ios/image_icon.png new file mode 100644 index 000000000..ae48559a2 Binary files /dev/null and b/maestro/images/expected/ios/image_icon.png differ diff --git a/maestro/images/expected/ios/image_static.png b/maestro/images/expected/ios/image_static.png new file mode 100644 index 000000000..0e9114bc9 Binary files /dev/null and b/maestro/images/expected/ios/image_static.png differ diff --git a/maestro/images/expected/ios/image_url.png b/maestro/images/expected/ios/image_url.png new file mode 100644 index 000000000..eff3db263 Binary files /dev/null and b/maestro/images/expected/ios/image_url.png differ diff --git a/maestro/images/expected/ios/line_chart.png b/maestro/images/expected/ios/line_chart.png new file mode 100644 index 000000000..10afe0a8a Binary files /dev/null and b/maestro/images/expected/ios/line_chart.png differ diff --git a/maestro/images/expected/ios/pie_chart_custom.png b/maestro/images/expected/ios/pie_chart_custom.png new file mode 100644 index 000000000..1beb76832 Binary files /dev/null and b/maestro/images/expected/ios/pie_chart_custom.png differ diff --git a/maestro/images/expected/ios/pie_chart_multiple_data_points.png b/maestro/images/expected/ios/pie_chart_multiple_data_points.png new file mode 100644 index 000000000..1ad672e33 Binary files /dev/null and b/maestro/images/expected/ios/pie_chart_multiple_data_points.png differ diff --git a/maestro/images/expected/ios/progress_bar.png b/maestro/images/expected/ios/progress_bar.png new file mode 100644 index 000000000..490a65ee3 Binary files /dev/null and b/maestro/images/expected/ios/progress_bar.png differ diff --git a/maestro/images/expected/ios/progress_circle.png b/maestro/images/expected/ios/progress_circle.png new file mode 100644 index 000000000..f019cca33 Binary files /dev/null and b/maestro/images/expected/ios/progress_circle.png differ diff --git a/maestro/images/expected/ios/qr_code.png b/maestro/images/expected/ios/qr_code.png new file mode 100644 index 000000000..a5fffe47d Binary files /dev/null and b/maestro/images/expected/ios/qr_code.png differ diff --git a/maestro/images/expected/ios/radio_buttons.png b/maestro/images/expected/ios/radio_buttons.png new file mode 100644 index 000000000..2b774ece2 Binary files /dev/null and b/maestro/images/expected/ios/radio_buttons.png differ diff --git a/maestro/images/expected/ios/range_slider.png b/maestro/images/expected/ios/range_slider.png new file mode 100644 index 000000000..9db92efc8 Binary files /dev/null and b/maestro/images/expected/ios/range_slider.png differ diff --git a/maestro/images/expected/ios/rating.png b/maestro/images/expected/ios/rating.png new file mode 100644 index 000000000..26f9094a8 Binary files /dev/null and b/maestro/images/expected/ios/rating.png differ diff --git a/maestro/images/expected/ios/slider.png b/maestro/images/expected/ios/slider.png new file mode 100644 index 000000000..82839668a Binary files /dev/null and b/maestro/images/expected/ios/slider.png differ diff --git a/maestro/images/expected/ios/toggle_buttons.png b/maestro/images/expected/ios/toggle_buttons.png new file mode 100644 index 000000000..c7876a0fd Binary files /dev/null and b/maestro/images/expected/ios/toggle_buttons.png differ diff --git a/maestro/run_maestro_tests.sh b/maestro/run_maestro_tests.sh new file mode 100644 index 000000000..8298f09d0 --- /dev/null +++ b/maestro/run_maestro_tests.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +# Get the directory of the current script +SCRIPT_DIR=$(dirname "$0") + +# Source the helpers.sh script from the script's directory +source "$SCRIPT_DIR/helpers/helpers.sh" || { echo "Failed to source helpers.sh"; exit 1; } + +# Check if run_tests function is available +command -v run_tests >/dev/null 2>&1 || { echo "run_tests function not found"; exit 1; } + +if [ "$1" == "android" ]; then + APP_ID="com.mendix.nativetemplate" + PLATFORM="android" +elif [ "$1" == "ios" ]; then + APP_ID="com.mendix.native.template" + PLATFORM="ios" + IOS_DEVICE="iPhone 16" +else + echo "Usage: $0 [android|ios] [widget]" + exit 1 +fi + +# Read the widget names from the second argument, defaulting to all widgets +IFS=',' read -r -a widgets <<< "${2:-*}" + +passed_tests=() +failed_tests=() +final_failed_tests=() + +# Function to run tests for a specific widget +run_widget_tests() { + local widget=$1 + local search_path="packages/pluggableWidgets/$widget" + local yaml_test_files=($(find $search_path -type f -path "*/maestro/*.yaml" ! -name "*_ios.yaml" ! -name "*_android.yaml")) + total_tests=${#yaml_test_files[@]} # Set total_tests here + local completed_tests=0 + + # Run all tests once + run_tests "${yaml_test_files[@]}" + + # Display initial summary after first run of all tests + echo + echo "📊 Initial Test Execution Summary for $widget:" + echo "-----------------------" + if [ ${#passed_tests[@]} -gt 0 ]; then + echo "✅ Passed Tests:" + for test in "${passed_tests[@]}"; do + echo " - $(basename "$test")" + done + else + echo "No tests passed." + fi + + if [ ${#failed_tests[@]} -gt 0 ]; then + echo "❌ Failed Tests:" + for test in "${failed_tests[@]}"; do + echo " - $(basename "$test")" + done + else + echo "No tests failed." + fi + + # Retry only failed tests + if [ ${#failed_tests[@]} -gt 0 ]; then + rerun_failed_tests "${failed_tests[@]}" + fi + + # Display final summary + echo + echo "📊 Final Test Execution Summary for $widget:" + echo "-----------------------" + if [ ${#passed_tests[@]} -gt 0 ]; then + echo "✅ Passed Tests:" + for test in "${passed_tests[@]}"; do + echo " - $(basename "$test")" + done + else + echo "No tests passed." + fi + + if [ ${#final_failed_tests[@]} -gt 0 ]; then + echo "❌ Failed Tests:" + for test in "${final_failed_tests[@]}"; do + echo " - $(basename "$test")" + done + return 1 + else + echo "All tests passed for $widget!" + return 0 + fi +} + +# Run tests for each widget +for widget in "${widgets[@]}"; do + run_widget_tests "$widget" + if [ $? -ne 0 ]; then + exit 1 + fi +done + +echo "All tests passed for all widgets!" +exit 0 \ No newline at end of file diff --git a/maestro/run_maestro_tests_local.sh b/maestro/run_maestro_tests_local.sh new file mode 100644 index 000000000..63ca980c7 --- /dev/null +++ b/maestro/run_maestro_tests_local.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Update DEVICE_ID and path to the yaml file according to needs +# Use command like: ./run_maestro_tests_local.sh android/ios proggress-circle-native + +if [ "$1" == "android" ]; then + #APP_ID="myapp.nativecomponentstestproject" + APP_ID="com.mendix.nativetemplate" + DEVICE_ID="emulator-5554" + PLATFORM="android" +elif [ "$1" == "ios" ]; then + # APP_ID="myapp.nativecomponentstestproject" + APP_ID="com.mendix.native.template" + DEVICE_ID="8006E26A-352B-4553-BA00-D8AE2DE23313" + PLATFORM="ios" +else + echo "Usage: $0 [android|ios] [widget]" + exit 1 +fi + +WIDGET=${2:-*-native} + +# Determine the search path based on the widget selection +if [ "$WIDGET" == "*-native" ]; then + search_path="../packages/pluggableWidgets" +else + search_path="../packages/pluggableWidgets/$WIDGET" +fi + +# Find all .yaml files under the determined search path, excluding platform-specific files +for yaml_test_file in $(find $search_path -type f -path "*/maestro/*.yaml" ! -name "*_ios.yaml" ! -name "*_android.yaml"); do + echo "Running test: $yaml_test_file" + maestro --device $DEVICE_ID test --env APP_ID=$APP_ID --env PLATFORM=$PLATFORM "$yaml_test_file" +done \ No newline at end of file diff --git a/package.json b/package.json index e71f80af0..397e282e3 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,9 @@ "setup-android": "node ./detox/scripts/setup-android.js", "setup-ios": "node ./detox/scripts/setup-ios.js", "patch-package": "sh ./scripts/patch/patch-package.sh", - "build:widgets": "node ./scripts/widget/buildWidgets.js" + "build:widgets": "node ./scripts/widget/buildWidgets.js", + "test:maestro:ios": "bash maestro/run_maestro_tests.sh ios", + "test:maestro:android": "bash maestro/run_maestro_tests.sh android" }, "workspaces": { "packages": [ @@ -42,6 +44,7 @@ ] }, "devDependencies": { + "@actions/core": "^1.6.0", "@commitlint/cli": "^18.6.1", "@commitlint/config-conventional": "^18.6.3", "@react-native/babel-preset": "0.75.4", @@ -54,8 +57,6 @@ "@types/concurrently": "^6.3.0", "@types/enzyme": "^3.10.18", "@types/jasmine": "^3.10.18", - "@types/jest": "^29.5.13", - "@types/jest-image-snapshot": "^6.4.0", "@types/mime": "^2.0.3", "@types/node": "^20.16.14", "@types/react": "~18.0.38", @@ -66,22 +67,19 @@ "@types/xml2js": "^0.4.14", "cross-env": "^7.0.3", "deepmerge": "^4.3.1", - "detox": "^19.13.0", "eslint": "^7.32.0", "eslint-plugin-prettier": "4.2.1", "husky": "^8.0.3", "identity-obj-proxy": "^3.0.0", "image-js": "^0.35.6", - "jest": "^29.4.1", - "jest-canvas-mock": "^2.5.2", - "jest-environment-jsdom": "^29.7.0", - "jest-image-snapshot": "^6.4.0", "lint-staged": "^10.5.4", "mendix-client": "^7.15.8", "patch-package": "^8.0.0", + "pixelmatch": "^5.3.0", + "pngjs": "^6.0.0", "prettier": "^2.8.8", "pretty-quick": "^3.3.1", - "react-dom": "18.2.0", + "react-dom": "18.3.1", "recursive-copy": "^2.0.14", "rollup": "^2.79.2", "ts-node": "^10.9.2" diff --git a/packages/jsActions/mobile-resources-native/package.json b/packages/jsActions/mobile-resources-native/package.json index 18a27b295..28507b6f8 100644 --- a/packages/jsActions/mobile-resources-native/package.json +++ b/packages/jsActions/mobile-resources-native/package.json @@ -54,4 +54,4 @@ "rimraf": "^4.4.1", "rollup": "^2.79.2" } -} \ No newline at end of file +} diff --git a/packages/jsActions/mobile-resources-native/src/e2e/specs/maestro/Actions.yaml b/packages/jsActions/mobile-resources-native/src/e2e/specs/maestro/Actions.yaml new file mode 100644 index 000000000..9c82734bc --- /dev/null +++ b/packages/jsActions/mobile-resources-native/src/e2e/specs/maestro/Actions.yaml @@ -0,0 +1,78 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../../maestro/Precondition.yaml" +- tapOn: + point: "37%,94%" +# Authentication +- tapOn: + text: "Authentication" +- tapOn: + text: "Is biometric authentication supported?" +# - assertVisible: +# text: "Information" +- tapOn: + text: "OK" +- tapOn: "Go back" + + +# Clipboard +- tapOn: + text: "Clipboard" +- tapOn: + text: "Set clipboard content to 'Hi there'" +- tapOn: + text: "Get clipboard content" +- tapOn: "Go back" + +# Network +- tapOn: + text: "Network" +- tapOn: + text: "Is connected?" +- assertVisible: + text: "Information" +- tapOn: + text: "OK" +- tapOn: + text: "Is wifi connected?" +- assertVisible: + text: "Information" +- tapOn: + text: "OK" +- tapOn: + text: "Is cellular connected?" +- assertVisible: + text: "Information" +- tapOn: + text: "OK" +- tapOn: "Go back" + +# Notifications +- tapOn: + text: "Notifications" +- tapOn: + text: "Has permission?" +- assertVisible: + text: "Information" +- tapOn: + text: "OK" +- tapOn: + text: "Request permission" +- assertVisible: + text: "Permission was granted" +- tapOn: + text: "OK" +- tapOn: + text: "Display notification" +- assertVisible: + text: "Title" +- tapOn: "Go back" + +# Mobile +- tapOn: + text: "Mobile" +- tapOn: + text: "Device info" +- assertVisible: + text: "Device info" \ No newline at end of file diff --git a/packages/pluggableWidgets/accordion-native/e2e/images/expected/android/30/pixel/Accordion should allow custom items as group headers 1.png b/packages/pluggableWidgets/accordion-native/e2e/images/expected/android/30/pixel/Accordion should allow custom items as group headers 1.png deleted file mode 100644 index 2e07358b6..000000000 Binary files a/packages/pluggableWidgets/accordion-native/e2e/images/expected/android/30/pixel/Accordion should allow custom items as group headers 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/accordion-native/e2e/images/expected/android/30/pixel/Accordion should render custom icons correctly 1.png b/packages/pluggableWidgets/accordion-native/e2e/images/expected/android/30/pixel/Accordion should render custom icons correctly 1.png deleted file mode 100644 index dc93e78ca..000000000 Binary files a/packages/pluggableWidgets/accordion-native/e2e/images/expected/android/30/pixel/Accordion should render custom icons correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should allow custom items as group headers 1.png b/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should allow custom items as group headers 1.png deleted file mode 100644 index d243729b9..000000000 Binary files a/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should allow custom items as group headers 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should render custom icons correctly 1.png b/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should render custom icons correctly 1.png deleted file mode 100644 index cab12a539..000000000 Binary files a/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should render custom icons correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should render custom icons correctly.png b/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should render custom icons correctly.png deleted file mode 100644 index b2500d772..000000000 Binary files a/packages/pluggableWidgets/accordion-native/e2e/images/expected/ios/16.0/iPhone/Accordion should render custom icons correctly.png and /dev/null differ diff --git a/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Custom.yaml b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Custom.yaml new file mode 100644 index 000000000..f007b3703 --- /dev/null +++ b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Custom.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Accordion" +- tapOn: + text: "Custom" +- assertVisible: + text: "Custom" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/accordion_custom" diff --git a/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Dynamic.yaml b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Dynamic.yaml new file mode 100644 index 000000000..606ececb6 --- /dev/null +++ b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Dynamic.yaml @@ -0,0 +1,18 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Accordion" +- tapOn: + text: "Dynamic" +- assertVisible: + text: "Header 1 - Text 1" +- assertNotVisible: + id: "staticImage" +- tapOn: + id: "switcher" +- assertVisible: + id: "staticImage" +- assertVisible: + text: "Header 3 - Text 1" diff --git a/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Multiple.yaml b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Multiple.yaml new file mode 100644 index 000000000..e5075ed8a --- /dev/null +++ b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Multiple.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Accordion" +- tapOn: + text: "Multiple" +- assertVisible: + text: "Header 1 - Text 1" +- assertVisible: + text: "Header 1 - Text 2" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/accordion_multiple" diff --git a/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_NonCollapsible.yaml b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_NonCollapsible.yaml new file mode 100644 index 000000000..87fbc848c --- /dev/null +++ b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_NonCollapsible.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Accordion" +- tapOn: + text: "NonCollapsible" +- assertVisible: + text: "Header 1 - Text 1" +- assertVisible: + id: "staticImage" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/accordion_noncollapsible" diff --git a/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_OnChange.yaml b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_OnChange.yaml new file mode 100644 index 000000000..638b6f069 --- /dev/null +++ b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_OnChange.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Accordion" +- tapOn: + text: "OnChange" +- assertVisible: + text: "Header 1 - Text 1" +- tapOn: "Header 1" +# - takeScreenshot: +# path: "maestro/images/actual/${PLATFORM}/accordion_on_change" diff --git a/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Single.yaml b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Single.yaml new file mode 100644 index 000000000..1a0cb1105 --- /dev/null +++ b/packages/pluggableWidgets/accordion-native/e2e/specs/maestro/Accordion_Single.yaml @@ -0,0 +1,20 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Accordion" +- tapOn: + text: "Single" +- assertVisible: + text: "Header 1 - Text 1" +- assertNotVisible: + text: "Header 3 - Text 1" +- assertNotVisible: + id: "staticImage" +- tapOn: + text: "Header 2" +- assertNotVisible: + text: "Header 1 - Text 1" +- assertVisible: + id: "staticImage" diff --git a/packages/pluggableWidgets/accordion-native/package.json b/packages/pluggableWidgets/accordion-native/package.json index a1b6a7231..2b8d9ae38 100644 --- a/packages/pluggableWidgets/accordion-native/package.json +++ b/packages/pluggableWidgets/accordion-native/package.json @@ -29,7 +29,6 @@ "@mendix/piw-utils-internal": "*" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0" + "@mendix/pluggable-widgets-tools": "~10.0.1" } } diff --git a/packages/pluggableWidgets/accordion-native/tsconfig.json b/packages/pluggableWidgets/accordion-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/accordion-native/tsconfig.json +++ b/packages/pluggableWidgets/accordion-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/activity-indicator-native/e2e/specs/maestro/ActivityIndicator.yaml b/packages/pluggableWidgets/activity-indicator-native/e2e/specs/maestro/ActivityIndicator.yaml new file mode 100644 index 000000000..b90400504 --- /dev/null +++ b/packages/pluggableWidgets/activity-indicator-native/e2e/specs/maestro/ActivityIndicator.yaml @@ -0,0 +1,9 @@ +appId: "${APP_ID}" +--- +# Flow for activity indicator +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Activity indicator" +- assertVisible: + text: "Default" diff --git a/packages/pluggableWidgets/activity-indicator-native/package.json b/packages/pluggableWidgets/activity-indicator-native/package.json index 372fdbf0e..108fed94d 100644 --- a/packages/pluggableWidgets/activity-indicator-native/package.json +++ b/packages/pluggableWidgets/activity-indicator-native/package.json @@ -28,7 +28,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/activity-indicator-native/tsconfig.json b/packages/pluggableWidgets/activity-indicator-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/activity-indicator-native/tsconfig.json +++ b/packages/pluggableWidgets/activity-indicator-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/animation-native/e2e/specs/maestro/Animation.yaml b/packages/pluggableWidgets/animation-native/e2e/specs/maestro/Animation.yaml new file mode 100644 index 000000000..167e657bb --- /dev/null +++ b/packages/pluggableWidgets/animation-native/e2e/specs/maestro/Animation.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +# Flow for animation +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Animation" +- assertVisible: + id: "image1" + index: 0 +- tapOn: + text: "Animate" +- waitForAnimationToEnd: + timeout: 5000 +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/animation" diff --git a/packages/pluggableWidgets/app-events-native/e2e/specs/maestro/AppEvents.yaml b/packages/pluggableWidgets/app-events-native/e2e/specs/maestro/AppEvents.yaml new file mode 100644 index 000000000..f8c3d5de8 --- /dev/null +++ b/packages/pluggableWidgets/app-events-native/e2e/specs/maestro/AppEvents.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: "App events" +- assertVisible: + text: "Event: Load" +- assertVisible: + text: "Event: Timer 2s" +- assertVisible: + text: "Event: Interval 10s" + delay: 15000 diff --git a/packages/pluggableWidgets/app-events-native/package.json b/packages/pluggableWidgets/app-events-native/package.json index 77e7cb989..4d434b997 100644 --- a/packages/pluggableWidgets/app-events-native/package.json +++ b/packages/pluggableWidgets/app-events-native/package.json @@ -29,7 +29,6 @@ "devDependencies": { "@mendix/piw-utils-internal": "*", "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/android/30/pixel/Background Gradient should render more than one color 1.png b/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/android/30/pixel/Background Gradient should render more than one color 1.png deleted file mode 100644 index 305f668a2..000000000 Binary files a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/android/30/pixel/Background Gradient should render more than one color 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/android/30/pixel/Background Gradient should render one color 1.png b/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/android/30/pixel/Background Gradient should render one color 1.png deleted file mode 100644 index f214badd6..000000000 Binary files a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/android/30/pixel/Background Gradient should render one color 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/ios/16.0/iPhone/Background Gradient should render more than one color 1.png b/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/ios/16.0/iPhone/Background Gradient should render more than one color 1.png deleted file mode 100644 index b8914a4d4..000000000 Binary files a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/ios/16.0/iPhone/Background Gradient should render more than one color 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/ios/16.0/iPhone/Background Gradient should render one color 1.png b/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/ios/16.0/iPhone/Background Gradient should render one color 1.png deleted file mode 100644 index 03ad512db..000000000 Binary files a/packages/pluggableWidgets/background-gradient-native/e2e/images/expected/ios/16.0/iPhone/Background Gradient should render one color 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-gradient-native/e2e/specs/maestro/BackgroundGradient.yaml b/packages/pluggableWidgets/background-gradient-native/e2e/specs/maestro/BackgroundGradient.yaml new file mode 100644 index 000000000..8aa3307a7 --- /dev/null +++ b/packages/pluggableWidgets/background-gradient-native/e2e/specs/maestro/BackgroundGradient.yaml @@ -0,0 +1,19 @@ +appId: "${APP_ID}" +--- +# Flow for background gradient +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background gradient" +- extendedWaitUntil: + visible: + id: "bgGradientOneColor" + timeout: 10000 +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/background_gradient" +- tapOn: + id: "bgGradientTwoColors" +- assertVisible: + text: "Clicked!" diff --git a/packages/pluggableWidgets/background-gradient-native/package.json b/packages/pluggableWidgets/background-gradient-native/package.json index becc429b5..533e4db62 100644 --- a/packages/pluggableWidgets/background-gradient-native/package.json +++ b/packages/pluggableWidgets/background-gradient-native/package.json @@ -26,7 +26,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" }, "dependencies": { diff --git a/packages/pluggableWidgets/background-gradient-native/tsconfig.json b/packages/pluggableWidgets/background-gradient-native/tsconfig.json index c8b8a52ef..4c1512c36 100644 --- a/packages/pluggableWidgets/background-gradient-native/tsconfig.json +++ b/packages/pluggableWidgets/background-gradient-native/tsconfig.json @@ -2,8 +2,7 @@ "extends": "@mendix/pluggable-widgets-tools/configs/tsconfig.base", "baseUrl": "./", "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] }, "include": ["./src", "./typings"] } diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the background image in a layout grid 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the background image in a layout grid 1.png deleted file mode 100644 index e07956951..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the background image in a layout grid 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the background image with clickable container 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the background image with clickable container 1.png deleted file mode 100644 index 36e42b216..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the background image with clickable container 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic image 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic image 1.png deleted file mode 100644 index 94f81475f..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic image with conditional visibility 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic image with conditional visibility 1.png deleted file mode 100644 index 08e65c423..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic image with conditional visibility 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic svg image 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic svg image 1.png deleted file mode 100644 index bdb0f7028..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the dynamic svg image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the nested background image 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the nested background image 1.png deleted file mode 100644 index e056f9c31..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the nested background image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the static images 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the static images 1.png deleted file mode 100644 index b79911346..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the static images 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the static svg images 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the static svg images 1.png deleted file mode 100644 index 68b2e82f5..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/android/30/pixel/Background image renders the static svg images 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the background image in a layout grid 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the background image in a layout grid 1.png deleted file mode 100644 index 191576266..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the background image in a layout grid 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the background image with clickable container 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the background image with clickable container 1.png deleted file mode 100644 index bd34f0d45..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the background image with clickable container 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic image 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic image 1.png deleted file mode 100644 index 52c2982ea..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic image with conditional visibility 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic image with conditional visibility 1.png deleted file mode 100644 index 682ce7118..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic image with conditional visibility 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic svg image 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic svg image 1.png deleted file mode 100644 index d1b3ffa22..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the dynamic svg image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the nested background image 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the nested background image 1.png deleted file mode 100644 index ee253c268..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the nested background image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the static images 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the static images 1.png deleted file mode 100644 index 349487f2f..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the static images 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the static svg images 1.png b/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the static svg images 1.png deleted file mode 100644 index 78818d84d..000000000 Binary files a/packages/pluggableWidgets/background-image-native/e2e/images/expected/ios/16.0/iPhone/Background image renders the static svg images 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_clickable_container.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_clickable_container.yaml new file mode 100644 index 000000000..bf47ed7ae --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_clickable_container.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Clickable container" +- tapOn: + id: "clickableContainer" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_clickable_container" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_conditional_visibility.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_conditional_visibility.yaml new file mode 100644 index 000000000..76c573d3a --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_conditional_visibility.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Conditional visibility" +- assertVisible: "Condtional visibility" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_conditional_visibility" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_dynamic_image.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_dynamic_image.yaml new file mode 100644 index 000000000..a91c4f0cc --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_dynamic_image.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Dynamic image" +- extendedWaitUntil: + visible: + id: "dynamicBgImage" + timeout: 30000 +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_dynamic_image" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_dynamic_svg.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_dynamic_svg.yaml new file mode 100644 index 000000000..24ebd9d96 --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_dynamic_svg.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Dynamic SVG image" +- extendedWaitUntil: + visible: "Dynamic SVG image" + timeout: 30000 + optional: true +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_dynamic_svg" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_layout_grid.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_layout_grid.yaml new file mode 100644 index 000000000..1466041a9 --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_layout_grid.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Layout grid" +- assertVisible: "Layout grid" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_layout_grid" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_nested.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_nested.yaml new file mode 100644 index 000000000..d2abc85a7 --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_nested.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Nested" +- assertVisible: "Nested" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_nested" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_static_images.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_static_images.yaml new file mode 100644 index 000000000..f3ed6c4b1 --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_static_images.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Static images" +- assertVisible: + text: "Static images" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_static_images" \ No newline at end of file diff --git a/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_static_svg.yaml b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_static_svg.yaml new file mode 100644 index 000000000..9160fedee --- /dev/null +++ b/packages/pluggableWidgets/background-image-native/e2e/specs/maestro/BgImage_static_svg.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Background image" +- tapOn: + text: "Static SVG images" +- assertVisible: "Static SVG images" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_static_svg" + diff --git a/packages/pluggableWidgets/background-image-native/package.json b/packages/pluggableWidgets/background-image-native/package.json index c0689dd76..d2c0ce01f 100644 --- a/packages/pluggableWidgets/background-image-native/package.json +++ b/packages/pluggableWidgets/background-image-native/package.json @@ -30,7 +30,6 @@ "devDependencies": { "@mendix/piw-utils-internal": "1.0.0", "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/background-image-native/tsconfig.json b/packages/pluggableWidgets/background-image-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/background-image-native/tsconfig.json +++ b/packages/pluggableWidgets/background-image-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge.yaml b/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge.yaml new file mode 100644 index 000000000..e84930a6c --- /dev/null +++ b/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge.yaml @@ -0,0 +1,11 @@ +appId: "${APP_ID}" +platform: "${PLATFORM}" +--- +- runFlow: + when: + platform: ios + file: ../../../../../../packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_ios.yaml +- runFlow: + when: + platform: android + file: ../../../../../../packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_android.yaml diff --git a/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_android.yaml b/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_android.yaml new file mode 100644 index 000000000..9593da840 --- /dev/null +++ b/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_android.yaml @@ -0,0 +1,25 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Badge" +- tapOn: + id: "textBoxBadge" +- inputText: + text: "Maestro" +- pressKey: Enter +- assertVisible: + text: "Maestro" + index: 1 +# does not render the badge with visibility set as false +- assertNotVisible: + id: "badgeNoVisibility" +# renders the badge with actions +- tapOn: + text: "Maestro" + index: 2 +- assertVisible: + text: "Action test: Maestro" diff --git a/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_ios.yaml b/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_ios.yaml new file mode 100644 index 000000000..395c52e37 --- /dev/null +++ b/packages/pluggableWidgets/badge-native/e2e/specs/maestro/Badge_ios.yaml @@ -0,0 +1,21 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Badge" +- inputText: + text: "Maestro" +- pressKey: Enter +- assertVisible: + text: "Maestro" + index: 1 +# does not render the badge with visibility set as false +- assertNotVisible: + id: "badgeNoVisibility" +# renders the badge with actions +- tapOn: + text: "Maestro" + index: 2 diff --git a/packages/pluggableWidgets/badge-native/package.json b/packages/pluggableWidgets/badge-native/package.json index 04a0ed675..69a4246ea 100644 --- a/packages/pluggableWidgets/badge-native/package.json +++ b/packages/pluggableWidgets/badge-native/package.json @@ -28,7 +28,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/badge-native/tsconfig.json b/packages/pluggableWidgets/badge-native/tsconfig.json index 68e17509d..aaf6e1f4e 100644 --- a/packages/pluggableWidgets/badge-native/tsconfig.json +++ b/packages/pluggableWidgets/badge-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./typings", "./src"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/bar-chart-native/e2e/images/expected/android/30/pixel/Bar chart renders correctly 1.png b/packages/pluggableWidgets/bar-chart-native/e2e/images/expected/android/30/pixel/Bar chart renders correctly 1.png deleted file mode 100644 index a797beb4c..000000000 Binary files a/packages/pluggableWidgets/bar-chart-native/e2e/images/expected/android/30/pixel/Bar chart renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/bar-chart-native/e2e/images/expected/ios/16.0/iPhone/Bar chart renders correctly 1.png b/packages/pluggableWidgets/bar-chart-native/e2e/images/expected/ios/16.0/iPhone/Bar chart renders correctly 1.png deleted file mode 100644 index 3abd49216..000000000 Binary files a/packages/pluggableWidgets/bar-chart-native/e2e/images/expected/ios/16.0/iPhone/Bar chart renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/bar-chart-native/e2e/specs/maestro/Bar_Chart.yaml b/packages/pluggableWidgets/bar-chart-native/e2e/specs/maestro/Bar_Chart.yaml new file mode 100644 index 000000000..4d4a3a237 --- /dev/null +++ b/packages/pluggableWidgets/bar-chart-native/e2e/specs/maestro/Bar_Chart.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Bar chart" +- assertVisible: + text: "Bar chart" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bar_chart" \ No newline at end of file diff --git a/packages/pluggableWidgets/bar-chart-native/package.json b/packages/pluggableWidgets/bar-chart-native/package.json index f912ccfaa..6d98c232f 100644 --- a/packages/pluggableWidgets/bar-chart-native/package.json +++ b/packages/pluggableWidgets/bar-chart-native/package.json @@ -29,7 +29,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/bar-chart-native/tsconfig.json b/packages/pluggableWidgets/bar-chart-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/bar-chart-native/tsconfig.json +++ b/packages/pluggableWidgets/bar-chart-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/barcode-scanner-native/e2e/specs/maestro/Barcode_scanner.yaml b/packages/pluggableWidgets/barcode-scanner-native/e2e/specs/maestro/Barcode_scanner.yaml new file mode 100644 index 000000000..d210dbc54 --- /dev/null +++ b/packages/pluggableWidgets/barcode-scanner-native/e2e/specs/maestro/Barcode_scanner.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Barcode scanner" +- assertVisible: + id: "text2" # History: +- tapOn: + text: "Scan" +- extendedWaitUntil: + visible: + text: "Scan" + timeout: 30000 diff --git a/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Bottom_sheet_expanding.yaml b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Bottom_sheet_expanding.yaml new file mode 100644 index 000000000..d85d0b0eb --- /dev/null +++ b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Bottom_sheet_expanding.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Bottom Sheet" +- tapOn: + text: "Expanding" +- assertVisible: + text: "Header" diff --git a/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Botton_sheet_expanding_fullscreen.yaml b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Botton_sheet_expanding_fullscreen.yaml new file mode 100644 index 000000000..6ebf5dd3b --- /dev/null +++ b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Botton_sheet_expanding_fullscreen.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Bottom Sheet" +- tapOn: + text: "Expanding fullscreen" +- assertVisible: + text: "Header" diff --git a/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_basic.yaml b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_basic.yaml new file mode 100644 index 000000000..9f969d39c --- /dev/null +++ b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_basic.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Bottom Sheet" +- tapOn: + text: "Modal basic" +- tapOn: + text: "Open" +- tapOn: + text: "Diego" diff --git a/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_basic_non_native.yaml b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_basic_non_native.yaml new file mode 100644 index 000000000..d174fe15c --- /dev/null +++ b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_basic_non_native.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Bottom Sheet" +- tapOn: + text: "Modal basic non native" +- tapOn: + text: "Open" +- tapOn: + text: "Diego" diff --git a/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_custom.yaml b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_custom.yaml new file mode 100644 index 000000000..ae9ee50c3 --- /dev/null +++ b/packages/pluggableWidgets/bottom-sheet-native/e2e/specs/maestro/Modal_custom.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "B" +- tapOn: + text: "Bottom Sheet" +- tapOn: + text: "Modal custom" +- tapOn: + text: "Open" +- tapOn: + text: "test" +- assertVisible: + text: "Successfully opened" diff --git a/packages/pluggableWidgets/bottom-sheet-native/tsconfig.json b/packages/pluggableWidgets/bottom-sheet-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/tsconfig.json +++ b/packages/pluggableWidgets/bottom-sheet-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/carousel-native/e2e/images/expected/android/30/pixel/Carousel should be able to swipe left and right 1.png b/packages/pluggableWidgets/carousel-native/e2e/images/expected/android/30/pixel/Carousel should be able to swipe left and right 1.png deleted file mode 100644 index f23a1a182..000000000 Binary files a/packages/pluggableWidgets/carousel-native/e2e/images/expected/android/30/pixel/Carousel should be able to swipe left and right 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/carousel-native/e2e/images/expected/android/30/pixel/Carousel should be able to swipe left and right 2.png b/packages/pluggableWidgets/carousel-native/e2e/images/expected/android/30/pixel/Carousel should be able to swipe left and right 2.png deleted file mode 100644 index f1e4c47f7..000000000 Binary files a/packages/pluggableWidgets/carousel-native/e2e/images/expected/android/30/pixel/Carousel should be able to swipe left and right 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/carousel-native/e2e/images/expected/ios/16.0/iPhone/Carousel should be able to swipe left and right 1.png b/packages/pluggableWidgets/carousel-native/e2e/images/expected/ios/16.0/iPhone/Carousel should be able to swipe left and right 1.png deleted file mode 100644 index 751e277c8..000000000 Binary files a/packages/pluggableWidgets/carousel-native/e2e/images/expected/ios/16.0/iPhone/Carousel should be able to swipe left and right 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/carousel-native/e2e/images/expected/ios/16.0/iPhone/Carousel should be able to swipe left and right 2.png b/packages/pluggableWidgets/carousel-native/e2e/images/expected/ios/16.0/iPhone/Carousel should be able to swipe left and right 2.png deleted file mode 100644 index 723589c5e..000000000 Binary files a/packages/pluggableWidgets/carousel-native/e2e/images/expected/ios/16.0/iPhone/Carousel should be able to swipe left and right 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/carousel-native/e2e/specs/maestro/Carousel.yaml b/packages/pluggableWidgets/carousel-native/e2e/specs/maestro/Carousel.yaml new file mode 100644 index 000000000..0daafad85 --- /dev/null +++ b/packages/pluggableWidgets/carousel-native/e2e/specs/maestro/Carousel.yaml @@ -0,0 +1,20 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Carousel" +- swipe: + from: + text: "Logo" + direction: LEFT +- assertVisible: + text: "Office" +- swipe: + from: + text: "Office" + direction: LEFT +- assertVisible: + text: "Fish" diff --git a/packages/pluggableWidgets/carousel-native/package.json b/packages/pluggableWidgets/carousel-native/package.json index 19ac13e09..9de9422f4 100644 --- a/packages/pluggableWidgets/carousel-native/package.json +++ b/packages/pluggableWidgets/carousel-native/package.json @@ -33,7 +33,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/react-native-snap-carousel": "^3.7.4", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/carousel-native/tsconfig.json b/packages/pluggableWidgets/carousel-native/tsconfig.json index e4e2a49fd..e4a42c8d6 100644 --- a/packages/pluggableWidgets/carousel-native/tsconfig.json +++ b/packages/pluggableWidgets/carousel-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings", "react-native-snap-carousel"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/color-picker-native/e2e/images/expected/android/30/pixel/Color picker renders correctly after change 1.png b/packages/pluggableWidgets/color-picker-native/e2e/images/expected/android/30/pixel/Color picker renders correctly after change 1.png deleted file mode 100644 index 863e032dc..000000000 Binary files a/packages/pluggableWidgets/color-picker-native/e2e/images/expected/android/30/pixel/Color picker renders correctly after change 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/color-picker-native/e2e/images/expected/ios/16.0/iPhone/Color picker renders correctly after change 1.png b/packages/pluggableWidgets/color-picker-native/e2e/images/expected/ios/16.0/iPhone/Color picker renders correctly after change 1.png deleted file mode 100644 index b0e6ca9f0..000000000 Binary files a/packages/pluggableWidgets/color-picker-native/e2e/images/expected/ios/16.0/iPhone/Color picker renders correctly after change 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Conditional.yaml b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Conditional.yaml new file mode 100644 index 000000000..75ab87235 --- /dev/null +++ b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Conditional.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Color picker" +- tapOn: + text: "Conditional" +- assertVisible: + text: "Color picker - Conditional" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/color_picker_conditional" + + diff --git a/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Disabled.yaml b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Disabled.yaml new file mode 100644 index 000000000..afda9100a --- /dev/null +++ b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Disabled.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Color picker" +- tapOn: + text: "Disabled" +- assertVisible: + text: "Color picker - Disabled" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/color_picker_disabled" diff --git a/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Normal.yaml b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Normal.yaml new file mode 100644 index 000000000..c904f07f8 --- /dev/null +++ b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Normal.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Color picker" +- tapOn: + text: "Normal" +- assertVisible: + text: "Color picker - Normal" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/color_picker_normal" diff --git a/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_OnChange.yaml b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_OnChange.yaml new file mode 100644 index 000000000..284e3188d --- /dev/null +++ b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_OnChange.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Color picker" +- tapOn: + text: "OnChange" +- assertVisible: + text: "Color picker - OnChange" diff --git a/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Partial.yaml b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Partial.yaml new file mode 100644 index 000000000..7dda95169 --- /dev/null +++ b/packages/pluggableWidgets/color-picker-native/e2e/specs/maestro/Color_picker_native_Partial.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Color picker" +- tapOn: + text: "Partial" +- assertVisible: + text: "Color picker - Partial" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/color_picker_partial" diff --git a/packages/pluggableWidgets/color-picker-native/package.json b/packages/pluggableWidgets/color-picker-native/package.json index 7acb4b5e4..5c0f1d2b3 100644 --- a/packages/pluggableWidgets/color-picker-native/package.json +++ b/packages/pluggableWidgets/color-picker-native/package.json @@ -35,7 +35,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/tinycolor2": "^1.4.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/color-picker-native/tsconfig.json b/packages/pluggableWidgets/color-picker-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/color-picker-native/tsconfig.json +++ b/packages/pluggableWidgets/color-picker-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/column-chart-native/e2e/images/expected/android/30/pixel/Column chart renders correctly 1.png b/packages/pluggableWidgets/column-chart-native/e2e/images/expected/android/30/pixel/Column chart renders correctly 1.png deleted file mode 100644 index 904c95de0..000000000 Binary files a/packages/pluggableWidgets/column-chart-native/e2e/images/expected/android/30/pixel/Column chart renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/column-chart-native/e2e/images/expected/ios/16.0/iPhone/Column chart renders correctly 1.png b/packages/pluggableWidgets/column-chart-native/e2e/images/expected/ios/16.0/iPhone/Column chart renders correctly 1.png deleted file mode 100644 index 9922d80c8..000000000 Binary files a/packages/pluggableWidgets/column-chart-native/e2e/images/expected/ios/16.0/iPhone/Column chart renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/column-chart-native/e2e/specs/maestro/Column_chart_native.yaml b/packages/pluggableWidgets/column-chart-native/e2e/specs/maestro/Column_chart_native.yaml new file mode 100644 index 000000000..4852c7329 --- /dev/null +++ b/packages/pluggableWidgets/column-chart-native/e2e/specs/maestro/Column_chart_native.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "C" +- tapOn: + text: "Column chart" +- assertVisible: + text: "Column chart" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/column_chart" + + diff --git a/packages/pluggableWidgets/column-chart-native/package.json b/packages/pluggableWidgets/column-chart-native/package.json index 2493adc3a..c763e9e1d 100644 --- a/packages/pluggableWidgets/column-chart-native/package.json +++ b/packages/pluggableWidgets/column-chart-native/package.json @@ -29,7 +29,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/column-chart-native/tsconfig.json b/packages/pluggableWidgets/column-chart-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/column-chart-native/tsconfig.json +++ b/packages/pluggableWidgets/column-chart-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/feedback-native/e2e/images/expected/android/30/pixel/Feedback widget should be able to submit a feedback item 1.png b/packages/pluggableWidgets/feedback-native/e2e/images/expected/android/30/pixel/Feedback widget should be able to submit a feedback item 1.png deleted file mode 100644 index d8c7405e5..000000000 Binary files a/packages/pluggableWidgets/feedback-native/e2e/images/expected/android/30/pixel/Feedback widget should be able to submit a feedback item 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/feedback-native/e2e/images/expected/android/30/pixel/Feedback widget should be able to submit a feedback item 2.png b/packages/pluggableWidgets/feedback-native/e2e/images/expected/android/30/pixel/Feedback widget should be able to submit a feedback item 2.png deleted file mode 100644 index 7892a6e46..000000000 Binary files a/packages/pluggableWidgets/feedback-native/e2e/images/expected/android/30/pixel/Feedback widget should be able to submit a feedback item 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/feedback-native/e2e/images/expected/ios/16.0/iPhone/Feedback widget should be able to submit a feedback item 1.png b/packages/pluggableWidgets/feedback-native/e2e/images/expected/ios/16.0/iPhone/Feedback widget should be able to submit a feedback item 1.png deleted file mode 100644 index 27252633a..000000000 Binary files a/packages/pluggableWidgets/feedback-native/e2e/images/expected/ios/16.0/iPhone/Feedback widget should be able to submit a feedback item 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/feedback-native/e2e/images/expected/ios/16.0/iPhone/Feedback widget should be able to submit a feedback item 2.png b/packages/pluggableWidgets/feedback-native/e2e/images/expected/ios/16.0/iPhone/Feedback widget should be able to submit a feedback item 2.png deleted file mode 100644 index 1eee5b973..000000000 Binary files a/packages/pluggableWidgets/feedback-native/e2e/images/expected/ios/16.0/iPhone/Feedback widget should be able to submit a feedback item 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/feedback-native/e2e/specs/maestro/Feedback.yaml b/packages/pluggableWidgets/feedback-native/e2e/specs/maestro/Feedback.yaml new file mode 100644 index 000000000..008a3b27e --- /dev/null +++ b/packages/pluggableWidgets/feedback-native/e2e/specs/maestro/Feedback.yaml @@ -0,0 +1,10 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "F" +- tapOn: + text: "Feedback" +- assertVisible: + text: ".*Lorem ipsum.*" diff --git a/packages/pluggableWidgets/feedback-native/package.json b/packages/pluggableWidgets/feedback-native/package.json index d52cf13a9..78caf1820 100644 --- a/packages/pluggableWidgets/feedback-native/package.json +++ b/packages/pluggableWidgets/feedback-native/package.json @@ -35,7 +35,6 @@ "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/querystringify": "^2.0.0", "@types/react-native-dialog": "^5.5.0", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/feedback-native/tsconfig.json b/packages/pluggableWidgets/feedback-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/feedback-native/tsconfig.json +++ b/packages/pluggableWidgets/feedback-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/android/30/pixel/Floating action button renders correct appearance after toggling secondary buttons 1.png b/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/android/30/pixel/Floating action button renders correct appearance after toggling secondary buttons 1.png deleted file mode 100644 index 9d7b750d8..000000000 Binary files a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/android/30/pixel/Floating action button renders correct appearance after toggling secondary buttons 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/android/30/pixel/Floating action button renders correct initial appearance 1.png b/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/android/30/pixel/Floating action button renders correct initial appearance 1.png deleted file mode 100644 index d5e43207f..000000000 Binary files a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/android/30/pixel/Floating action button renders correct initial appearance 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/ios/16.0/iPhone/Floating action button renders correct appearance after toggling secondary buttons 1.png b/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/ios/16.0/iPhone/Floating action button renders correct appearance after toggling secondary buttons 1.png deleted file mode 100644 index 1665ee7b3..000000000 Binary files a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/ios/16.0/iPhone/Floating action button renders correct appearance after toggling secondary buttons 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/ios/16.0/iPhone/Floating action button renders correct initial appearance 1.png b/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/ios/16.0/iPhone/Floating action button renders correct initial appearance 1.png deleted file mode 100644 index 3aafc8bad..000000000 Binary files a/packages/pluggableWidgets/floating-action-button-native/e2e/images/expected/ios/16.0/iPhone/Floating action button renders correct initial appearance 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/floating-action-button-native/e2e/specs/maestro/FloatingActionButton.yaml b/packages/pluggableWidgets/floating-action-button-native/e2e/specs/maestro/FloatingActionButton.yaml new file mode 100644 index 000000000..4254d76c2 --- /dev/null +++ b/packages/pluggableWidgets/floating-action-button-native/e2e/specs/maestro/FloatingActionButton.yaml @@ -0,0 +1,23 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "F" +- tapOn: + text: "Floating action button" +- tapOn: + id: "floatingActionButtonTopLeft" +- assertVisible: + text: "Music w/ action" +- tapOn: + id: "floatingActionButtonBottomLeft" +- assertVisible: + text: "Zooooom" +- tapOn: + id: "floatingActionButtonBottomRight" +- assertVisible: + text: "Email" +- tapOn: + id: "floatingActionButtonTopRight" + diff --git a/packages/pluggableWidgets/floating-action-button-native/package.json b/packages/pluggableWidgets/floating-action-button-native/package.json index a85ec40da..41291debb 100644 --- a/packages/pluggableWidgets/floating-action-button-native/package.json +++ b/packages/pluggableWidgets/floating-action-button-native/package.json @@ -32,7 +32,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/floating-action-button-native/tsconfig.json b/packages/pluggableWidgets/floating-action-button-native/tsconfig.json index 68e17509d..aaf6e1f4e 100644 --- a/packages/pluggableWidgets/floating-action-button-native/tsconfig.json +++ b/packages/pluggableWidgets/floating-action-button-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./typings", "./src"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/gallery-native/e2e/images/expected/android/30/pixel/Gallery renders correctly 1.png b/packages/pluggableWidgets/gallery-native/e2e/images/expected/android/30/pixel/Gallery renders correctly 1.png deleted file mode 100644 index 0479b5078..000000000 Binary files a/packages/pluggableWidgets/gallery-native/e2e/images/expected/android/30/pixel/Gallery renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-native/e2e/images/expected/android/30/pixel/Gallery should load more items when press the load more items button 1.png b/packages/pluggableWidgets/gallery-native/e2e/images/expected/android/30/pixel/Gallery should load more items when press the load more items button 1.png deleted file mode 100644 index 5c260a0d4..000000000 Binary files a/packages/pluggableWidgets/gallery-native/e2e/images/expected/android/30/pixel/Gallery should load more items when press the load more items button 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-native/e2e/images/expected/ios/16.0/iPhone/Gallery renders correctly 1.png b/packages/pluggableWidgets/gallery-native/e2e/images/expected/ios/16.0/iPhone/Gallery renders correctly 1.png deleted file mode 100644 index 43bfb43fe..000000000 Binary files a/packages/pluggableWidgets/gallery-native/e2e/images/expected/ios/16.0/iPhone/Gallery renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-native/e2e/images/expected/ios/16.0/iPhone/Gallery should load more items when press the load more items button 1.png b/packages/pluggableWidgets/gallery-native/e2e/images/expected/ios/16.0/iPhone/Gallery should load more items when press the load more items button 1.png deleted file mode 100644 index 7add10238..000000000 Binary files a/packages/pluggableWidgets/gallery-native/e2e/images/expected/ios/16.0/iPhone/Gallery should load more items when press the load more items button 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-native/e2e/specs/maestro/Gallery_native.yaml b/packages/pluggableWidgets/gallery-native/e2e/specs/maestro/Gallery_native.yaml new file mode 100644 index 000000000..1c4ba3c73 --- /dev/null +++ b/packages/pluggableWidgets/gallery-native/e2e/specs/maestro/Gallery_native.yaml @@ -0,0 +1,22 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "G" +- tapOn: + text: "Gallery" +- tapOn: + text: "Gallery" +- assertNotVisible: + text: ".*Title 5.*" +- tapOn: + text: "Load more" +- assertVisible: + text: ".*Title 5.*" +- swipe: + from: + text: ".*Title 5.*" + direction: UP +- assertVisible: + text: ".*Title 9.*" diff --git a/packages/pluggableWidgets/gallery-native/package.json b/packages/pluggableWidgets/gallery-native/package.json index 63c9fd868..9cde4741e 100644 --- a/packages/pluggableWidgets/gallery-native/package.json +++ b/packages/pluggableWidgets/gallery-native/package.json @@ -33,7 +33,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/gallery-native/tsconfig.json b/packages/pluggableWidgets/gallery-native/tsconfig.json index 686662a5f..d1acbddc8 100644 --- a/packages/pluggableWidgets/gallery-native/tsconfig.json +++ b/packages/pluggableWidgets/gallery-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["node_modules/@mendix/pluggable-widgets-tools/typings", "./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/----Gallery Text Filter renders correctly_OLD.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/----Gallery Text Filter renders correctly_OLD.png deleted file mode 100644 index 650c362be..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/----Gallery Text Filter renders correctly_OLD.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter filters by text 1.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter filters by text 1.png deleted file mode 100644 index 6dae09639..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter filters by text 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter filters by text empty list 1.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter filters by text empty list 1.png deleted file mode 100644 index 57286de59..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter filters by text empty list 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter renders correctly 1.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter renders correctly 1.png deleted file mode 100644 index b50f0b4b5..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/android/30/pixel/Gallery Text Filter renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter filters by text 1.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter filters by text 1.png deleted file mode 100644 index b75848df1..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter filters by text 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter filters by text empty list 1.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter filters by text empty list 1.png deleted file mode 100644 index d45106aaa..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter filters by text empty list 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter renders correctly 1.png b/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter renders correctly 1.png deleted file mode 100644 index eca7b97de..000000000 Binary files a/packages/pluggableWidgets/gallery-text-filter-native/e2e/images/expected/ios/17.0/iPhone/Gallery Text Filter renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/gallery-text-filter-native/e2e/specs/maestro/Gallery_Text_Filter.yaml b/packages/pluggableWidgets/gallery-text-filter-native/e2e/specs/maestro/Gallery_Text_Filter.yaml new file mode 100644 index 000000000..c6b7d63a5 --- /dev/null +++ b/packages/pluggableWidgets/gallery-text-filter-native/e2e/specs/maestro/Gallery_Text_Filter.yaml @@ -0,0 +1,28 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "G" +- tapOn: + text: "Gallery" +- tapOn: + text: "Gallery text filter" +- assertVisible: + text: "Title 0" +- tapOn: + id: "textFilter1-text-input" +- inputText: + text: "Title 5" +- pressKey: Enter +- assertVisible: + text: "Title 5" + index: 1 +- tapOn: + id: "textFilter1-text-input" +- eraseText +- inputText: + text: "Title 100" +- pressKey: Enter +- assertVisible: + text: "No results found" diff --git a/packages/pluggableWidgets/gallery-text-filter-native/package.json b/packages/pluggableWidgets/gallery-text-filter-native/package.json index b0d9c4bb7..752741b12 100644 --- a/packages/pluggableWidgets/gallery-text-filter-native/package.json +++ b/packages/pluggableWidgets/gallery-text-filter-native/package.json @@ -30,7 +30,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/gallery-text-filter-native/tsconfig.json b/packages/pluggableWidgets/gallery-text-filter-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/gallery-text-filter-native/tsconfig.json +++ b/packages/pluggableWidgets/gallery-text-filter-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the dynamic image 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the dynamic image 1.png deleted file mode 100644 index fdcafb183..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the dynamic image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the image with URL 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the image with URL 1.png deleted file mode 100644 index 12b7d40c0..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the image with URL 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the image with icon 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the image with icon 1.png deleted file mode 100644 index b923489e1..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the image with icon 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the static image 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the static image 1.png deleted file mode 100644 index 9df905599..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/android/30/pixel/Image renders the static image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the dynamic image 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the dynamic image 1.png deleted file mode 100644 index 77a797419..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the dynamic image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the image with URL 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the image with URL 1.png deleted file mode 100644 index 21131fd9f..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the image with URL 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the image with icon 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the image with icon 1.png deleted file mode 100644 index fb750f576..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the image with icon 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the static image 1.png b/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the static image 1.png deleted file mode 100644 index 129e90a0d..000000000 Binary files a/packages/pluggableWidgets/image-native/e2e/images/expected/ios/16.0/iPhone/Image renders the static image 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_dynamic.yaml b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_dynamic.yaml new file mode 100644 index 000000000..96f051490 --- /dev/null +++ b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_dynamic.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "I" +- tapOn: + text: "Image" +- tapOn: + text: "Image dynamic" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/image_dynamic" diff --git a/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_icon.yaml b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_icon.yaml new file mode 100644 index 000000000..26f77efc7 --- /dev/null +++ b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_icon.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "I" +- tapOn: + text: "Image" +- tapOn: + text: "Image icon" +- assertVisible: + text: "Image Icon" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/image_icon" diff --git a/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_static.yaml b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_static.yaml new file mode 100644 index 000000000..f3eff09b4 --- /dev/null +++ b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_static.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "I" +- tapOn: + text: "Image" +- tapOn: + text: "Image static" +- assertVisible: + text: "Image Static" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/image_static" diff --git a/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_url.yaml b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_url.yaml new file mode 100644 index 000000000..6559bbf48 --- /dev/null +++ b/packages/pluggableWidgets/image-native/e2e/specs/maestro/Image_url.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "I" +- tapOn: + text: "Image" +- tapOn: + text: "Image url" +- assertVisible: "Main as Image URL(svg); Background as No; Action as Open dialog box" + diff --git a/packages/pluggableWidgets/image-native/package.json b/packages/pluggableWidgets/image-native/package.json index 23bb39df9..f3ebd6e22 100644 --- a/packages/pluggableWidgets/image-native/package.json +++ b/packages/pluggableWidgets/image-native/package.json @@ -36,7 +36,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/image-native/tsconfig.json b/packages/pluggableWidgets/image-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/image-native/tsconfig.json +++ b/packages/pluggableWidgets/image-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 1.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 1.png deleted file mode 100644 index b6494f519..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 2.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 2.png deleted file mode 100644 index b36c45bca..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 3.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 3.png deleted file mode 100644 index f6c29829d..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 3.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 4.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 4.png deleted file mode 100644 index 7a488c840..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/android/30/pixel/Intro screen should be able to change screens and fire event 4.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 1.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 1.png deleted file mode 100644 index 8f570c278..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 2.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 2.png deleted file mode 100644 index 5edacbc41..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 3.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 3.png deleted file mode 100644 index 74632d7e5..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 3.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 4.png b/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 4.png deleted file mode 100644 index add54a93c..000000000 Binary files a/packages/pluggableWidgets/intro-screen-native/e2e/images/expected/ios/16.0/iPhone/Intro screen should be able to change screens and fire event 4.png and /dev/null differ diff --git a/packages/pluggableWidgets/intro-screen-native/e2e/specs/maestro/IntroScreen.yaml b/packages/pluggableWidgets/intro-screen-native/e2e/specs/maestro/IntroScreen.yaml new file mode 100644 index 000000000..9a3ec05da --- /dev/null +++ b/packages/pluggableWidgets/intro-screen-native/e2e/specs/maestro/IntroScreen.yaml @@ -0,0 +1,47 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "I" +- tapOn: + text: "Intro screen" +- assertVisible: + text: "Active slide: 2" +- assertVisible: + text: "Changes: 0" +- swipe: + direction: LEFT +- assertVisible: + text: "Active slide: 3" +- assertVisible: + text: "Changes: 1" +- swipe: + direction: RIGHT +- assertVisible: + text: "Active slide: 2" +- assertVisible: + text: "Changes: 2" +- tapOn: + text: "PREVIOUS" +- assertVisible: + text: "Active slide: 1" +- assertVisible: + text: "Changes: 3" +- tapOn: + text: "SKIP" +- assertVisible: + text: "Skipped" +- tapOn: + text: "OK" +- tapOn: "Go back" +- tapOn: + text: "Intro screen" +- assertVisible: + text: "Active slide: 2" +- tapOn: + text: "NEXT" +- tapOn: + text: "FINISH" +- assertVisible: + text: "Done" diff --git a/packages/pluggableWidgets/intro-screen-native/package.json b/packages/pluggableWidgets/intro-screen-native/package.json index 8b91b0dda..e09448644 100644 --- a/packages/pluggableWidgets/intro-screen-native/package.json +++ b/packages/pluggableWidgets/intro-screen-native/package.json @@ -32,7 +32,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/intro-screen-native/tsconfig.json b/packages/pluggableWidgets/intro-screen-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/intro-screen-native/tsconfig.json +++ b/packages/pluggableWidgets/intro-screen-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/line-chart-native/e2e/images/expected/android/30/pixel/Line chart renders correctly 1.png b/packages/pluggableWidgets/line-chart-native/e2e/images/expected/android/30/pixel/Line chart renders correctly 1.png deleted file mode 100644 index 15610e5c1..000000000 Binary files a/packages/pluggableWidgets/line-chart-native/e2e/images/expected/android/30/pixel/Line chart renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/line-chart-native/e2e/images/expected/ios/16.0/iPhone/Line chart renders correctly 1.png b/packages/pluggableWidgets/line-chart-native/e2e/images/expected/ios/16.0/iPhone/Line chart renders correctly 1.png deleted file mode 100644 index d948edd23..000000000 Binary files a/packages/pluggableWidgets/line-chart-native/e2e/images/expected/ios/16.0/iPhone/Line chart renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/line-chart-native/e2e/specs/maestro/LineChart.yaml b/packages/pluggableWidgets/line-chart-native/e2e/specs/maestro/LineChart.yaml new file mode 100644 index 000000000..7b722ac7a --- /dev/null +++ b/packages/pluggableWidgets/line-chart-native/e2e/specs/maestro/LineChart.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "L" +- tapOn: + text: "Line chart" +- assertVisible: + text: "Line chart" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/line_chart" \ No newline at end of file diff --git a/packages/pluggableWidgets/line-chart-native/package.json b/packages/pluggableWidgets/line-chart-native/package.json index f2513abf7..e88ec8182 100644 --- a/packages/pluggableWidgets/line-chart-native/package.json +++ b/packages/pluggableWidgets/line-chart-native/package.json @@ -28,7 +28,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/line-chart-native/tsconfig.json b/packages/pluggableWidgets/line-chart-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/line-chart-native/tsconfig.json +++ b/packages/pluggableWidgets/line-chart-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/listview-swipe-native/e2e/specs/maestro/ListViewSwipe.yaml b/packages/pluggableWidgets/listview-swipe-native/e2e/specs/maestro/ListViewSwipe.yaml new file mode 100644 index 000000000..593e16115 --- /dev/null +++ b/packages/pluggableWidgets/listview-swipe-native/e2e/specs/maestro/ListViewSwipe.yaml @@ -0,0 +1,16 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "L" +- tapOn: + text: "List view swipe" +- assertVisible: + text: "Actions" +- assertVisible: + text: "Test 1" +- tapOn: + text: "Buttons" +- assertVisible: + text: "Test 1" diff --git a/packages/pluggableWidgets/maps-native/e2e/specs/maestro/Maps_dynamic.yaml b/packages/pluggableWidgets/maps-native/e2e/specs/maestro/Maps_dynamic.yaml new file mode 100644 index 000000000..c6bca3bb5 --- /dev/null +++ b/packages/pluggableWidgets/maps-native/e2e/specs/maestro/Maps_dynamic.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "M" +- tapOn: + text: "Maps" +- tapOn: + text: "Maps Dynamic markers" +- assertVisible: + text: "Dynamic Markers" diff --git a/packages/pluggableWidgets/maps-native/e2e/specs/maestro/Maps_static.yaml b/packages/pluggableWidgets/maps-native/e2e/specs/maestro/Maps_static.yaml new file mode 100644 index 000000000..4b8280aed --- /dev/null +++ b/packages/pluggableWidgets/maps-native/e2e/specs/maestro/Maps_static.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "M" +- tapOn: + text: "Maps" +- tapOn: + text: "Maps Static markers" +- assertVisible: + text: "Static Markers" diff --git a/packages/pluggableWidgets/maps-native/package.json b/packages/pluggableWidgets/maps-native/package.json index e24b21f92..5267256fc 100644 --- a/packages/pluggableWidgets/maps-native/package.json +++ b/packages/pluggableWidgets/maps-native/package.json @@ -33,7 +33,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/maps-native/tsconfig.json b/packages/pluggableWidgets/maps-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/maps-native/tsconfig.json +++ b/packages/pluggableWidgets/maps-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/android/30/pixel/Pie-doughnut chart renders doughnut chart correctly 1.png b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/android/30/pixel/Pie-doughnut chart renders doughnut chart correctly 1.png deleted file mode 100644 index 368e58f7b..000000000 Binary files a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/android/30/pixel/Pie-doughnut chart renders doughnut chart correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/android/30/pixel/Pie-doughnut chart renders pie chart correctly 1.png b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/android/30/pixel/Pie-doughnut chart renders pie chart correctly 1.png deleted file mode 100644 index 014512af5..000000000 Binary files a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/android/30/pixel/Pie-doughnut chart renders pie chart correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/ios/16.0/iPhone/Pie-doughnut chart renders doughnut chart correctly 1-snap.png b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/ios/16.0/iPhone/Pie-doughnut chart renders doughnut chart correctly 1-snap.png deleted file mode 100644 index 264bec316..000000000 Binary files a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/ios/16.0/iPhone/Pie-doughnut chart renders doughnut chart correctly 1-snap.png and /dev/null differ diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/ios/16.0/iPhone/Pie-doughnut chart renders pie chart correctly 1-snap.png b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/ios/16.0/iPhone/Pie-doughnut chart renders pie chart correctly 1-snap.png deleted file mode 100644 index 5dc3a3655..000000000 Binary files a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/images/expected/ios/16.0/iPhone/Pie-doughnut chart renders pie chart correctly 1-snap.png and /dev/null differ diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Doughnut_chart_custom.yaml b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Doughnut_chart_custom.yaml new file mode 100644 index 000000000..d17f9578e --- /dev/null +++ b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Doughnut_chart_custom.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Pie doughnut chart" +- tapOn: + text: "Doughnut chart Custom style" +- assertVisible: + text: "TextToAssert" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/doughnut_chart_custom" \ No newline at end of file diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Doughnut_chart_multiple_data_points.yaml b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Doughnut_chart_multiple_data_points.yaml new file mode 100644 index 000000000..1ff41a6ed --- /dev/null +++ b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Doughnut_chart_multiple_data_points.yaml @@ -0,0 +1,15 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Pie doughnut chart" +- tapOn: + text: "Doughnut chart Multiple data points" +- assertVisible: + text: "TextToAssert" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/doughnut_chart_multiple_data_points" + diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Pie_chart_custom.yaml b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Pie_chart_custom.yaml new file mode 100644 index 000000000..e0e2f51c6 --- /dev/null +++ b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Pie_chart_custom.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Pie doughnut chart" +- tapOn: + text: "Pie chart Custom style" +- assertVisible: + text: "TextToAssert" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/pie_chart_custom" diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Pie_chart_multiple_data_points.yaml b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Pie_chart_multiple_data_points.yaml new file mode 100644 index 000000000..a1ffee2fe --- /dev/null +++ b/packages/pluggableWidgets/pie-doughnut-chart-native/e2e/specs/maestro/Pie_chart_multiple_data_points.yaml @@ -0,0 +1,14 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Pie doughnut chart" +- tapOn: + text: "Pie chart Multiple data points" +- assertVisible: + text: "TextToAssert" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/pie_chart_multiple_data_points" diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/package.json b/packages/pluggableWidgets/pie-doughnut-chart-native/package.json index b6e3b71a2..b0960a55d 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-native/package.json +++ b/packages/pluggableWidgets/pie-doughnut-chart-native/package.json @@ -29,7 +29,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/pie-doughnut-chart-native/tsconfig.json b/packages/pluggableWidgets/pie-doughnut-chart-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/pie-doughnut-chart-native/tsconfig.json +++ b/packages/pluggableWidgets/pie-doughnut-chart-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/android/30/pixel/Popup menu has a basic menu with an action 1.png b/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/android/30/pixel/Popup menu has a basic menu with an action 1.png deleted file mode 100644 index 2f5d9ffed..000000000 Binary files a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/android/30/pixel/Popup menu has a basic menu with an action 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/android/30/pixel/Popup menu has a custom menu with an action 1.png b/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/android/30/pixel/Popup menu has a custom menu with an action 1.png deleted file mode 100644 index f895a4dbe..000000000 Binary files a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/android/30/pixel/Popup menu has a custom menu with an action 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/ios/16.0/iPhone/Popup menu has a basic menu with an action 1.png b/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/ios/16.0/iPhone/Popup menu has a basic menu with an action 1.png deleted file mode 100644 index 6a347c28e..000000000 Binary files a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/ios/16.0/iPhone/Popup menu has a basic menu with an action 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/ios/16.0/iPhone/Popup menu has a custom menu with an action 1.png b/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/ios/16.0/iPhone/Popup menu has a custom menu with an action 1.png deleted file mode 100644 index fd7f8aa33..000000000 Binary files a/packages/pluggableWidgets/popup-menu-native/e2e/images/expected/ios/16.0/iPhone/Popup menu has a custom menu with an action 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/popup-menu-native/e2e/specs/maestro/PopupMenu.yaml b/packages/pluggableWidgets/popup-menu-native/e2e/specs/maestro/PopupMenu.yaml new file mode 100644 index 000000000..6ffe3e720 --- /dev/null +++ b/packages/pluggableWidgets/popup-menu-native/e2e/specs/maestro/PopupMenu.yaml @@ -0,0 +1,21 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Popup menu" +- tapOn: + text: "Combinations" +- assertVisible: + text: "Withcontainer" +- tapOn: "Go back" +- tapOn: + text: "Basic" +- tapOn: + text: "Alert" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/bg_image_dynamic_svg_alert" + + diff --git a/packages/pluggableWidgets/popup-menu-native/package.json b/packages/pluggableWidgets/popup-menu-native/package.json index ae7f162a6..e80c56985 100644 --- a/packages/pluggableWidgets/popup-menu-native/package.json +++ b/packages/pluggableWidgets/popup-menu-native/package.json @@ -30,7 +30,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/react-native-material-menu": "^1.0.6", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/popup-menu-native/tsconfig.json b/packages/pluggableWidgets/popup-menu-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/popup-menu-native/tsconfig.json +++ b/packages/pluggableWidgets/popup-menu-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/progress-bar-native/e2e/images/expected/android/30/pixel/Progress Bar renders correctly 1.png b/packages/pluggableWidgets/progress-bar-native/e2e/images/expected/android/30/pixel/Progress Bar renders correctly 1.png deleted file mode 100644 index 51a27445d..000000000 Binary files a/packages/pluggableWidgets/progress-bar-native/e2e/images/expected/android/30/pixel/Progress Bar renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/progress-bar-native/e2e/images/expected/ios/16.0/iPhone/Progress Bar renders correctly 1.png b/packages/pluggableWidgets/progress-bar-native/e2e/images/expected/ios/16.0/iPhone/Progress Bar renders correctly 1.png deleted file mode 100644 index 9ca3d0c9d..000000000 Binary files a/packages/pluggableWidgets/progress-bar-native/e2e/images/expected/ios/16.0/iPhone/Progress Bar renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/progress-bar-native/e2e/specs/maestro/ProgressBar.yaml b/packages/pluggableWidgets/progress-bar-native/e2e/specs/maestro/ProgressBar.yaml new file mode 100644 index 000000000..ad279383b --- /dev/null +++ b/packages/pluggableWidgets/progress-bar-native/e2e/specs/maestro/ProgressBar.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Progress bar" +- assertVisible: + text: "Dynamic values:" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/progress_bar" + diff --git a/packages/pluggableWidgets/progress-bar-native/package.json b/packages/pluggableWidgets/progress-bar-native/package.json index 983ac422c..b6f31f75e 100644 --- a/packages/pluggableWidgets/progress-bar-native/package.json +++ b/packages/pluggableWidgets/progress-bar-native/package.json @@ -29,7 +29,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/progress-bar-native/tsconfig.json b/packages/pluggableWidgets/progress-bar-native/tsconfig.json index 68e17509d..aaf6e1f4e 100644 --- a/packages/pluggableWidgets/progress-bar-native/tsconfig.json +++ b/packages/pluggableWidgets/progress-bar-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./typings", "./src"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/progress-circle-native/e2e/images/expected/android/30/pixel/Progress Circle renders correctly 1.png b/packages/pluggableWidgets/progress-circle-native/e2e/images/expected/android/30/pixel/Progress Circle renders correctly 1.png deleted file mode 100644 index 7e698e75a..000000000 Binary files a/packages/pluggableWidgets/progress-circle-native/e2e/images/expected/android/30/pixel/Progress Circle renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/progress-circle-native/e2e/images/expected/ios/16.0/iPhone/Progress Circle renders correctly 1.png b/packages/pluggableWidgets/progress-circle-native/e2e/images/expected/ios/16.0/iPhone/Progress Circle renders correctly 1.png deleted file mode 100644 index 567af2fa3..000000000 Binary files a/packages/pluggableWidgets/progress-circle-native/e2e/images/expected/ios/16.0/iPhone/Progress Circle renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/progress-circle-native/e2e/specs/maestro/ProgressCircle.yaml b/packages/pluggableWidgets/progress-circle-native/e2e/specs/maestro/ProgressCircle.yaml new file mode 100644 index 000000000..4bdffc1fd --- /dev/null +++ b/packages/pluggableWidgets/progress-circle-native/e2e/specs/maestro/ProgressCircle.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "P" +- tapOn: + text: "Progress circle" +- assertVisible: + text: "With default text:" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/progress_circle" diff --git a/packages/pluggableWidgets/progress-circle-native/package.json b/packages/pluggableWidgets/progress-circle-native/package.json index 629feca3b..6100100eb 100644 --- a/packages/pluggableWidgets/progress-circle-native/package.json +++ b/packages/pluggableWidgets/progress-circle-native/package.json @@ -29,7 +29,6 @@ "devDependencies": { "@mendix/piw-utils-internal": "*", "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/progress-circle-native/tsconfig.json b/packages/pluggableWidgets/progress-circle-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/progress-circle-native/tsconfig.json +++ b/packages/pluggableWidgets/progress-circle-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly 1.png b/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly 1.png deleted file mode 100644 index 2e6c78def..000000000 Binary files a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly 2.png b/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly 2.png deleted file mode 100644 index f97abc4d6..000000000 Binary files a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly after change 1.png b/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly after change 1.png deleted file mode 100644 index 40a5f196e..000000000 Binary files a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/android/30/pixel/QR code renders correctly after change 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly 1.png b/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly 1.png deleted file mode 100644 index a32737b55..000000000 Binary files a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly 2.png b/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly 2.png deleted file mode 100644 index c55d8d722..000000000 Binary files a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly after change 1.png b/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly after change 1.png deleted file mode 100644 index 81b83457c..000000000 Binary files a/packages/pluggableWidgets/qr-code-native/e2e/images/expected/ios/16.0/iPhone/QR code renders correctly after change 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/qr-code-native/e2e/specs/maestro/QRCode.yaml b/packages/pluggableWidgets/qr-code-native/e2e/specs/maestro/QRCode.yaml new file mode 100644 index 000000000..25ce7c35d --- /dev/null +++ b/packages/pluggableWidgets/qr-code-native/e2e/specs/maestro/QRCode.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "Q" +- tapOn: + text: "QR code" +- assertVisible: + id: "qRCodeNormal" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/qr_code" diff --git a/packages/pluggableWidgets/qr-code-native/package.json b/packages/pluggableWidgets/qr-code-native/package.json index 0fc6cb94b..dd92c264d 100644 --- a/packages/pluggableWidgets/qr-code-native/package.json +++ b/packages/pluggableWidgets/qr-code-native/package.json @@ -32,7 +32,6 @@ "devDependencies": { "@mendix/piw-utils-internal": "1.0.0", "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/qr-code-native/tsconfig.json b/packages/pluggableWidgets/qr-code-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/qr-code-native/tsconfig.json +++ b/packages/pluggableWidgets/qr-code-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/android/30/pixel/Radio Buttons should call on change when selected option changes 1.png b/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/android/30/pixel/Radio Buttons should call on change when selected option changes 1.png deleted file mode 100644 index 741fa2b9b..000000000 Binary files a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/android/30/pixel/Radio Buttons should call on change when selected option changes 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/android/30/pixel/Radio Buttons should call on change when selected option changes 2.png b/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/android/30/pixel/Radio Buttons should call on change when selected option changes 2.png deleted file mode 100644 index 12f140217..000000000 Binary files a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/android/30/pixel/Radio Buttons should call on change when selected option changes 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/ios/16.0/iPhone/Radio Buttons should call on change when selected option changes 1.png b/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/ios/16.0/iPhone/Radio Buttons should call on change when selected option changes 1.png deleted file mode 100644 index c68e6c094..000000000 Binary files a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/ios/16.0/iPhone/Radio Buttons should call on change when selected option changes 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/ios/16.0/iPhone/Radio Buttons should call on change when selected option changes 2.png b/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/ios/16.0/iPhone/Radio Buttons should call on change when selected option changes 2.png deleted file mode 100644 index 8d711caec..000000000 Binary files a/packages/pluggableWidgets/radio-buttons-native/e2e/images/expected/ios/16.0/iPhone/Radio Buttons should call on change when selected option changes 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/radio-buttons-native/e2e/specs/maestro/RadioButtons.yaml b/packages/pluggableWidgets/radio-buttons-native/e2e/specs/maestro/RadioButtons.yaml new file mode 100644 index 000000000..f8903ab7d --- /dev/null +++ b/packages/pluggableWidgets/radio-buttons-native/e2e/specs/maestro/RadioButtons.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "R" +- tapOn: + text: "Radio buttons" +- assertVisible: + text: "Vertical radio buttons" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/radio_buttons" diff --git a/packages/pluggableWidgets/radio-buttons-native/package.json b/packages/pluggableWidgets/radio-buttons-native/package.json index fa7dea21e..f7a26b081 100644 --- a/packages/pluggableWidgets/radio-buttons-native/package.json +++ b/packages/pluggableWidgets/radio-buttons-native/package.json @@ -30,7 +30,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/radio-buttons-native/tsconfig.json b/packages/pluggableWidgets/radio-buttons-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/radio-buttons-native/tsconfig.json +++ b/packages/pluggableWidgets/radio-buttons-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/range-slider-native/e2e/images/expected/android/30/pixel/Range Slider renders correctly after setting value 1.png b/packages/pluggableWidgets/range-slider-native/e2e/images/expected/android/30/pixel/Range Slider renders correctly after setting value 1.png deleted file mode 100644 index ec94a187a..000000000 Binary files a/packages/pluggableWidgets/range-slider-native/e2e/images/expected/android/30/pixel/Range Slider renders correctly after setting value 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/range-slider-native/e2e/images/expected/ios/16.0/iPhone/Range slider renders correctly after setting value 1.png b/packages/pluggableWidgets/range-slider-native/e2e/images/expected/ios/16.0/iPhone/Range slider renders correctly after setting value 1.png deleted file mode 100644 index 637fc3b4a..000000000 Binary files a/packages/pluggableWidgets/range-slider-native/e2e/images/expected/ios/16.0/iPhone/Range slider renders correctly after setting value 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/range-slider-native/e2e/specs/maestro/RangeSlider.yaml b/packages/pluggableWidgets/range-slider-native/e2e/specs/maestro/RangeSlider.yaml new file mode 100644 index 000000000..5c5eb6937 --- /dev/null +++ b/packages/pluggableWidgets/range-slider-native/e2e/specs/maestro/RangeSlider.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "R" +- tapOn: + text: "Range slider" +- assertVisible: + text: "Dynamic ranges" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/range_slider" diff --git a/packages/pluggableWidgets/range-slider-native/package.json b/packages/pluggableWidgets/range-slider-native/package.json index cc25935ae..f66842ce7 100644 --- a/packages/pluggableWidgets/range-slider-native/package.json +++ b/packages/pluggableWidgets/range-slider-native/package.json @@ -33,7 +33,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/ptomasroos__react-native-multi-slider": "^0.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/range-slider-native/tsconfig.json b/packages/pluggableWidgets/range-slider-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/range-slider-native/tsconfig.json +++ b/packages/pluggableWidgets/range-slider-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/rating-native/e2e/images/expected/android/30/pixel/Rating renders correctly after change 1.png b/packages/pluggableWidgets/rating-native/e2e/images/expected/android/30/pixel/Rating renders correctly after change 1.png deleted file mode 100644 index d68c98bf1..000000000 Binary files a/packages/pluggableWidgets/rating-native/e2e/images/expected/android/30/pixel/Rating renders correctly after change 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/rating-native/e2e/images/expected/ios/16.0/iPhone/Rating renders correctly after change 1.png b/packages/pluggableWidgets/rating-native/e2e/images/expected/ios/16.0/iPhone/Rating renders correctly after change 1.png deleted file mode 100644 index c5bc29a1d..000000000 Binary files a/packages/pluggableWidgets/rating-native/e2e/images/expected/ios/16.0/iPhone/Rating renders correctly after change 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/rating-native/e2e/specs/maestro/Rating.yaml b/packages/pluggableWidgets/rating-native/e2e/specs/maestro/Rating.yaml new file mode 100644 index 000000000..ae20c68b6 --- /dev/null +++ b/packages/pluggableWidgets/rating-native/e2e/specs/maestro/Rating.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "R" +- tapOn: + text: "Rating" +- assertVisible: + text: "Normal:" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/rating" diff --git a/packages/pluggableWidgets/rating-native/package.json b/packages/pluggableWidgets/rating-native/package.json index 30f819107..dc84a74f0 100644 --- a/packages/pluggableWidgets/rating-native/package.json +++ b/packages/pluggableWidgets/rating-native/package.json @@ -33,7 +33,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/react-native-star-rating": "^1.1.6", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/rating-native/tsconfig.json b/packages/pluggableWidgets/rating-native/tsconfig.json index d7a70dbb9..0fede3e4c 100644 --- a/packages/pluggableWidgets/rating-native/tsconfig.json +++ b/packages/pluggableWidgets/rating-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./typings", "./src"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/repeater-native/e2e/images/expected/android/30/pixel/Repeater renders the default repeater 1.png b/packages/pluggableWidgets/repeater-native/e2e/images/expected/android/30/pixel/Repeater renders the default repeater 1.png deleted file mode 100644 index 04a214537..000000000 Binary files a/packages/pluggableWidgets/repeater-native/e2e/images/expected/android/30/pixel/Repeater renders the default repeater 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/repeater-native/e2e/images/expected/ios/16.0/iPhone/Repeater renders the default repeater 1.png b/packages/pluggableWidgets/repeater-native/e2e/images/expected/ios/16.0/iPhone/Repeater renders the default repeater 1.png deleted file mode 100644 index 1041df32a..000000000 Binary files a/packages/pluggableWidgets/repeater-native/e2e/images/expected/ios/16.0/iPhone/Repeater renders the default repeater 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/repeater-native/e2e/specs/maestro/Repeater.yaml b/packages/pluggableWidgets/repeater-native/e2e/specs/maestro/Repeater.yaml new file mode 100644 index 000000000..f9baabaac --- /dev/null +++ b/packages/pluggableWidgets/repeater-native/e2e/specs/maestro/Repeater.yaml @@ -0,0 +1,19 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "R" +- tapOn: + text: "Repeater" +- assertVisible: + text: "FirstName 1" + index: 0 +- assertVisible: + text: "Nested Repeater" +- assertVisible: + text: "Hello" + index: 2 +- assertVisible: + text: "hello" + index: 7 diff --git a/packages/pluggableWidgets/repeater-native/package.json b/packages/pluggableWidgets/repeater-native/package.json index 2333428ce..a02a82427 100644 --- a/packages/pluggableWidgets/repeater-native/package.json +++ b/packages/pluggableWidgets/repeater-native/package.json @@ -30,7 +30,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/repeater-native/tsconfig.json b/packages/pluggableWidgets/repeater-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/repeater-native/tsconfig.json +++ b/packages/pluggableWidgets/repeater-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewBottomBar.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewBottomBar.yaml new file mode 100644 index 000000000..4ae2ac446 --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewBottomBar.yaml @@ -0,0 +1,15 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "Bottom bar" +- assertVisible: "Expected result:\r + + \ - Safe area has an orange background color\r + + \ - Bottom bar starts directly below safe area" diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewContainer.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewContainer.yaml new file mode 100644 index 000000000..ffac22989 --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewContainer.yaml @@ -0,0 +1,25 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "Container" +- assertVisible: "Safe area view widget directly on a fullscreen page. The safe area has an orange background color, the page has a blue background color and the container with content has a white background color.\r + + \r + + Expected result: \r + + \ - Safe area has horizontal and vertical padding\r + + \ - Safe area has an orange background color\r + + \ - Unsafe area has a blue background color\r + + \ - White container with text located in the safe area\r + + \ - White container uses all available space (flex 1)" diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewImage.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewImage.yaml new file mode 100644 index 000000000..ae3af6ec1 --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewImage.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "Image" +- assertVisible: + id: "image1" diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewListView.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewListView.yaml new file mode 100644 index 000000000..11f93e0aa --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewListView.yaml @@ -0,0 +1,15 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "List view" +- assertVisible: + text: "test Shoe 1 favorite No" +- assertVisible: + id: "image1" + index: 14 diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewMaps.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewMaps.yaml new file mode 100644 index 000000000..aade05f64 --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewMaps.yaml @@ -0,0 +1,19 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "Maps" +- assertVisible: + text: "Information" + optional: true +- tapOn: + text: "OK" + optional: true +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/SafeAreaViewMaps" + diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewText.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewText.yaml new file mode 100644 index 000000000..820767438 --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewText.yaml @@ -0,0 +1,15 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "Text" +- assertVisible: "Default safe area view widget directly on a fullscreen page.\r + + \r + + Expected result: Text rendered in safe area and full blue background" diff --git a/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewTopBar.yaml b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewTopBar.yaml new file mode 100644 index 000000000..56d72af55 --- /dev/null +++ b/packages/pluggableWidgets/safe-area-view-native/e2e/specs/maestro/SafeAreaViewTopBar.yaml @@ -0,0 +1,15 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Safe area view" +- tapOn: + text: "Top bar" +- assertVisible: "Expected result:\r + + \ - Safe area has an orange background color\r + + \ - Safe area starts directly below header" diff --git a/packages/pluggableWidgets/signature-native/e2e/specs/maestro/Signature.yaml b/packages/pluggableWidgets/signature-native/e2e/specs/maestro/Signature.yaml new file mode 100644 index 000000000..56b4e2da8 --- /dev/null +++ b/packages/pluggableWidgets/signature-native/e2e/specs/maestro/Signature.yaml @@ -0,0 +1,25 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Signature" +- swipe: + start: 50%, 36% + end: 10%, 75% +- tapOn: + text: "Clear" +- assertVisible: + text: "Signature" +- swipe: + start: 50%, 36% + end: 10%, 75% +- tapOn: + text: "Save" +- extendedWaitUntil: + visible: + text: "Base64" + timeout: 30000 + optional: true diff --git a/packages/pluggableWidgets/signature-native/package.json b/packages/pluggableWidgets/signature-native/package.json index dc221e9a5..f1419b887 100644 --- a/packages/pluggableWidgets/signature-native/package.json +++ b/packages/pluggableWidgets/signature-native/package.json @@ -32,7 +32,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/signature-native/tsconfig.json b/packages/pluggableWidgets/signature-native/tsconfig.json index 951a09e08..be7c8dab0 100644 --- a/packages/pluggableWidgets/signature-native/tsconfig.json +++ b/packages/pluggableWidgets/signature-native/tsconfig.json @@ -5,7 +5,6 @@ "compilerOptions": { "target": "es2017", "lib": ["es2015", "es2017"], - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/slider-native/e2e/images/expected/android/30/pixel/Slider renders correct initial appearance 1.png b/packages/pluggableWidgets/slider-native/e2e/images/expected/android/30/pixel/Slider renders correct initial appearance 1.png deleted file mode 100644 index 2d0c024bf..000000000 Binary files a/packages/pluggableWidgets/slider-native/e2e/images/expected/android/30/pixel/Slider renders correct initial appearance 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/slider-native/e2e/images/expected/android/30/pixel/Slider renders correctly after setting value 1.png b/packages/pluggableWidgets/slider-native/e2e/images/expected/android/30/pixel/Slider renders correctly after setting value 1.png deleted file mode 100644 index 2dad37301..000000000 Binary files a/packages/pluggableWidgets/slider-native/e2e/images/expected/android/30/pixel/Slider renders correctly after setting value 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/slider-native/e2e/images/expected/ios/16.0/iPhone/Slider renders correct initial appearance 1.png b/packages/pluggableWidgets/slider-native/e2e/images/expected/ios/16.0/iPhone/Slider renders correct initial appearance 1.png deleted file mode 100644 index 6ed1e2be1..000000000 Binary files a/packages/pluggableWidgets/slider-native/e2e/images/expected/ios/16.0/iPhone/Slider renders correct initial appearance 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/slider-native/e2e/images/expected/ios/16.0/iPhone/Slider renders correctly after setting value 1.png b/packages/pluggableWidgets/slider-native/e2e/images/expected/ios/16.0/iPhone/Slider renders correctly after setting value 1.png deleted file mode 100644 index 60132736d..000000000 Binary files a/packages/pluggableWidgets/slider-native/e2e/images/expected/ios/16.0/iPhone/Slider renders correctly after setting value 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/slider-native/e2e/specs/maestro/Slider.yaml b/packages/pluggableWidgets/slider-native/e2e/specs/maestro/Slider.yaml new file mode 100644 index 000000000..58c20ddc1 --- /dev/null +++ b/packages/pluggableWidgets/slider-native/e2e/specs/maestro/Slider.yaml @@ -0,0 +1,11 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Slider" +- assertVisible: "Slider" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/slider" diff --git a/packages/pluggableWidgets/slider-native/package.json b/packages/pluggableWidgets/slider-native/package.json index 35db3cb39..585bad6d8 100644 --- a/packages/pluggableWidgets/slider-native/package.json +++ b/packages/pluggableWidgets/slider-native/package.json @@ -33,7 +33,6 @@ "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", "@types/ptomasroos__react-native-multi-slider": "^0.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/slider-native/tsconfig.json b/packages/pluggableWidgets/slider-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/slider-native/tsconfig.json +++ b/packages/pluggableWidgets/slider-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders correctly when false 1.png b/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders correctly when false 1.png deleted file mode 100644 index ffa37fdee..000000000 Binary files a/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders correctly when false 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders correctly when true 1.png b/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders correctly when true 1.png deleted file mode 100644 index 8ec8f321b..000000000 Binary files a/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders correctly when true 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders custom style 1.png b/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders custom style 1.png deleted file mode 100644 index dff5d41ff..000000000 Binary files a/packages/pluggableWidgets/switch-native/e2e/images/expected/android/30/pixel/Switch renders custom style 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders correctly when false 1.png b/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders correctly when false 1.png deleted file mode 100644 index 8ac23cac5..000000000 Binary files a/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders correctly when false 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders correctly when true 1.png b/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders correctly when true 1.png deleted file mode 100644 index f6c3e6005..000000000 Binary files a/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders correctly when true 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders custom style 1.png b/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders custom style 1.png deleted file mode 100644 index 6216278de..000000000 Binary files a/packages/pluggableWidgets/switch-native/e2e/images/expected/ios/16.0/iPhone/Switch renders custom style 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/switch-native/e2e/specs/maestro/Switch.yaml b/packages/pluggableWidgets/switch-native/e2e/specs/maestro/Switch.yaml new file mode 100644 index 000000000..a5d2e4f7f --- /dev/null +++ b/packages/pluggableWidgets/switch-native/e2e/specs/maestro/Switch.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "S" +- tapOn: + text: "Switch" +- tapOn: + id: "switch1" +- assertVisible: + text: "I will present myself when the boolean is True" diff --git a/packages/pluggableWidgets/switch-native/package.json b/packages/pluggableWidgets/switch-native/package.json index fa6469358..b24b7788c 100644 --- a/packages/pluggableWidgets/switch-native/package.json +++ b/packages/pluggableWidgets/switch-native/package.json @@ -30,7 +30,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/switch-native/tsconfig.json b/packages/pluggableWidgets/switch-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/switch-native/tsconfig.json +++ b/packages/pluggableWidgets/switch-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders custom style 1.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders custom style 1.png deleted file mode 100644 index 1ebc542b8..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders custom style 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders default state correctly 1.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders default state correctly 1.png deleted file mode 100644 index 55a9ce8d8..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders default state correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders default state correctly 2.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders default state correctly 2.png deleted file mode 100644 index 186f1b4f0..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders default state correctly 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders disabled state correctly 1.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders disabled state correctly 1.png deleted file mode 100644 index 5970862de..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/android/30/pixel/Toggle Buttons renders disabled state correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders custom style 1.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders custom style 1.png deleted file mode 100644 index 083c3cc4d..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders custom style 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders default state correctly 1.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders default state correctly 1.png deleted file mode 100644 index c71a90960..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders default state correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders default state correctly 2.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders default state correctly 2.png deleted file mode 100644 index 9dcc8a105..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders default state correctly 2.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders disabled state correctly 1.png b/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders disabled state correctly 1.png deleted file mode 100644 index f7288050a..000000000 Binary files a/packages/pluggableWidgets/toggle-buttons-native/e2e/images/expected/ios/16.0/iPhone/Toggle Buttons renders disabled state correctly 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/toggle-buttons-native/e2e/specs/maestro/ToggleButtons.yaml b/packages/pluggableWidgets/toggle-buttons-native/e2e/specs/maestro/ToggleButtons.yaml new file mode 100644 index 000000000..1dedfa7ed --- /dev/null +++ b/packages/pluggableWidgets/toggle-buttons-native/e2e/specs/maestro/ToggleButtons.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "T" +- tapOn: + text: "Toggle buttons" +- assertVisible: + text: "Toggle buttons" +- takeScreenshot: + path: "maestro/images/actual/${PLATFORM}/toggle_buttons" diff --git a/packages/pluggableWidgets/toggle-buttons-native/package.json b/packages/pluggableWidgets/toggle-buttons-native/package.json index 050b6d6c2..58d5e8d15 100644 --- a/packages/pluggableWidgets/toggle-buttons-native/package.json +++ b/packages/pluggableWidgets/toggle-buttons-native/package.json @@ -32,7 +32,6 @@ "devDependencies": { "@babel/plugin-transform-flow-strip-types": "^7.4.4", "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/toggle-buttons-native/tsconfig.json b/packages/pluggableWidgets/toggle-buttons-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/toggle-buttons-native/tsconfig.json +++ b/packages/pluggableWidgets/toggle-buttons-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/video-player-native/e2e/specs/maestro/VideoPlayer.yaml b/packages/pluggableWidgets/video-player-native/e2e/specs/maestro/VideoPlayer.yaml new file mode 100644 index 000000000..b818ab081 --- /dev/null +++ b/packages/pluggableWidgets/video-player-native/e2e/specs/maestro/VideoPlayer.yaml @@ -0,0 +1,10 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "V" +- tapOn: + text: "Video player" +- assertVisible: + text: "Video player" diff --git a/packages/pluggableWidgets/video-player-native/tsconfig.json b/packages/pluggableWidgets/video-player-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/video-player-native/tsconfig.json +++ b/packages/pluggableWidgets/video-player-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should open URL inline 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should open URL inline 1.png deleted file mode 100644 index 095bf7cc6..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should open URL inline 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should send along custom user agent 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should send along custom user agent 1.png deleted file mode 100644 index c2505de71..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should send along custom user agent 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should show HTML content inline 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should show HTML content inline 1.png deleted file mode 100644 index ecddb7342..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should show HTML content inline 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should show custom styling 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should show custom styling 1.png deleted file mode 100644 index f5640c456..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/android/30/pixel/Web view should show custom styling 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view ios-should open URL externally 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view ios-should open URL externally 1.png deleted file mode 100644 index dad9e4625..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view ios-should open URL externally 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should open URL inline 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should open URL inline 1.png deleted file mode 100644 index bcf9abe9a..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should open URL inline 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should send along custom user agent 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should send along custom user agent 1.png deleted file mode 100644 index f0ed8dcc9..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should send along custom user agent 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should show HTML content inline 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should show HTML content inline 1.png deleted file mode 100644 index 46504ecfd..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should show HTML content inline 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should show custom styling 1.png b/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should show custom styling 1.png deleted file mode 100644 index 18a4f48d4..000000000 Binary files a/packages/pluggableWidgets/web-view-native/e2e/images/expected/ios/16.0/iPhone/Web view should show custom styling 1.png and /dev/null differ diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Custom.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Custom.yaml new file mode 100644 index 000000000..256861033 --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Custom.yaml @@ -0,0 +1,13 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "Custom" +- assertVisible: + text: "URL loaded" + diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events.yaml new file mode 100644 index 000000000..f417eb958 --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +platform: "${PLATFORM}" +--- +- runFlow: + when: + platform: ios + file: ../../../../../../packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_ios.yaml +- runFlow: + when: + platform: android + file: ../../../../../../packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_android.yaml + diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_android.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_android.yaml new file mode 100644 index 000000000..ad4e571ce --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_android.yaml @@ -0,0 +1,21 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "Events" +- assertVisible: + text: "URL loaded" + optional: true +- tapOn: + text: "OK" + optional: true +- tapOn: + text: "Invalid URL" +- assertVisible: + text: "Error" + optional: true diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_ios.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_ios.yaml new file mode 100644 index 000000000..0b87db13d --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_Events_ios.yaml @@ -0,0 +1,20 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "Events" +- extendedWaitUntil: + visible: "URL loaded" + timeout: 30000 +- tapOn: + text: "OK" +- tapOn: + text: "Invalid URL" +- extendedWaitUntil: + visible: "Error" + timeout: 30000 \ No newline at end of file diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_External.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_External.yaml new file mode 100644 index 000000000..9ff03a7fc --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_External.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "External" +- assertVisible: + text: "URL loaded" diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_HTML.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_HTML.yaml new file mode 100644 index 000000000..5d0c777d8 --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_HTML.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "HTML" +- assertVisible: + text: "URL loaded" diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_NoContent.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_NoContent.yaml new file mode 100644 index 000000000..86bdfe121 --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_NoContent.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "NoContent" +- assertVisible: + text: "No URL or content was provided." diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_URL.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_URL.yaml new file mode 100644 index 000000000..7ee208bb3 --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_URL.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "URL" +- assertVisible: + text: "URL loaded" diff --git a/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_UserAgent.yaml b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_UserAgent.yaml new file mode 100644 index 000000000..f01fbb061 --- /dev/null +++ b/packages/pluggableWidgets/web-view-native/e2e/specs/maestro/WebView_UserAgent.yaml @@ -0,0 +1,12 @@ +appId: "${APP_ID}" +--- +- runFlow: + file: "../../../../../../maestro/Precondition.yaml" +- tapOn: + text: "W" +- tapOn: + text: "Web view" +- tapOn: + text: "UserAgent" +- assertVisible: + text: "URL loaded" diff --git a/packages/pluggableWidgets/web-view-native/package.json b/packages/pluggableWidgets/web-view-native/package.json index cd2bf99a4..acdab0d7d 100644 --- a/packages/pluggableWidgets/web-view-native/package.json +++ b/packages/pluggableWidgets/web-view-native/package.json @@ -31,7 +31,6 @@ }, "devDependencies": { "@mendix/pluggable-widgets-tools": "~10.0.1", - "detox": "^19.13.0", "eslint": "^7.32.0" } } diff --git a/packages/pluggableWidgets/web-view-native/tsconfig.json b/packages/pluggableWidgets/web-view-native/tsconfig.json index 6d62e40a7..89776d5ca 100644 --- a/packages/pluggableWidgets/web-view-native/tsconfig.json +++ b/packages/pluggableWidgets/web-view-native/tsconfig.json @@ -3,7 +3,6 @@ "baseUrl": "./", "include": ["./src", "./typings"], "compilerOptions": { - "typeRoots": ["node_modules/@types", "../../../node_modules/@types"], - "types": ["jest-image-snapshot"] + "typeRoots": ["node_modules/@types", "../../../node_modules/@types"] } } diff --git a/yarn.lock b/yarn.lock index 9af8e49ba..4974cd009 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,42 @@ __metadata: version: 8 cacheKey: 10 +"@actions/core@npm:^1.6.0": + version: 1.11.1 + resolution: "@actions/core@npm:1.11.1" + dependencies: + "@actions/exec": "npm:^1.1.1" + "@actions/http-client": "npm:^2.0.1" + checksum: 10/94f260e33607cc16567ce4c88014f069cd7da92baaa443b72cff80fdf4f1dcd18192e135df0d51ec29e8b82cfe214218715d482f2a7804efa5095737d1245f38 + languageName: node + linkType: hard + +"@actions/exec@npm:^1.1.1": + version: 1.1.1 + resolution: "@actions/exec@npm:1.1.1" + dependencies: + "@actions/io": "npm:^1.0.1" + checksum: 10/c04bd25191e522841c7e17862d70099de8db61278d2b4c744b69ac0197a48f85c75dba548e1c29c695c4cc5363d558846b4dcd3db9013463c18ba8cf36497c6d + languageName: node + linkType: hard + +"@actions/http-client@npm:^2.0.1": + version: 2.2.3 + resolution: "@actions/http-client@npm:2.2.3" + dependencies: + tunnel: "npm:^0.0.6" + undici: "npm:^5.25.4" + checksum: 10/0c0a540c79e50f795d214f696710bb9c50bdf5bb1458be288140f2aae3686adec73fdb464c43da5ef94f985ac7736273efef21cb5ba5a3b09e85b403d852c04b + languageName: node + linkType: hard + +"@actions/io@npm:^1.0.1": + version: 1.1.3 + resolution: "@actions/io@npm:1.1.3" + checksum: 10/4de44e8d428ba9f20049c844b37ecd486b589ed201f8cc8c5b550a9e4c72d1f594271ee2a7a6cfe8a42ebfb5dd527ef65016454656db391a353d41eab4f147e1 + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": version: 4.0.1 resolution: "@adobe/css-tools@npm:4.0.1" @@ -3010,6 +3046,13 @@ __metadata: languageName: node linkType: hard +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 10/2bb8a7eca8289ed14c9eb15239bc1019797454624e769b39a0b90ed204d032403adc0f8ed0d2aef8a18c772205fa7808cf5a1b91f21c7bfc7b6032150b1062c5 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -4914,17 +4957,6 @@ __metadata: languageName: node linkType: hard -"@types/jest-image-snapshot@npm:^6.4.0": - version: 6.4.0 - resolution: "@types/jest-image-snapshot@npm:6.4.0" - dependencies: - "@types/jest": "npm:*" - "@types/pixelmatch": "npm:*" - ssim.js: "npm:^3.1.1" - checksum: 10/80b423cf5f8ed3f608ada89d41c29b8cd0eaf0b3c1517ac0b8f2369764181ba08950918bd94960e9b36165c5d430d123b72962dd57852bcc05b1fc4ee803d8ff - languageName: node - linkType: hard - "@types/jest@npm:*": version: 29.2.0 resolution: "@types/jest@npm:29.2.0" @@ -4935,16 +4967,6 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^29.5.13": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" - dependencies: - expect: "npm:^29.0.0" - pretty-format: "npm:^29.0.0" - checksum: 10/7d6e3e4ef4b1cab0f61270d55764709512fdfbcb1bd47c0ef44117d48490529c1f264dacf3440b9188363e99e290b80b79c529eadc3af2184116a90f6856b192 - languageName: node - linkType: hard - "@types/jsdom@npm:^20.0.0": version: 20.0.1 resolution: "@types/jsdom@npm:20.0.1" @@ -5030,15 +5052,6 @@ __metadata: languageName: node linkType: hard -"@types/pixelmatch@npm:*": - version: 5.2.4 - resolution: "@types/pixelmatch@npm:5.2.4" - dependencies: - "@types/node": "npm:*" - checksum: 10/8920c3b7df22851ad69192fb7637206cb8f7dc73520f602202e36dd6f6b7701a4b56746175e7d7391ed9dc2c636d4d9bc5d7bd26fc3f1b11df1a63fb86418b91 - languageName: node - linkType: hard - "@types/prettier@npm:^2.1.5": version: 2.7.2 resolution: "@types/prettier@npm:2.7.2" @@ -5571,7 +5584,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" languageName: unknown linkType: soft @@ -5644,7 +5656,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -5691,7 +5702,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^8.0.1, ajv@npm:^8.6.3": +"ajv@npm:^8.0.1": version: 8.11.0 resolution: "ajv@npm:8.11.0" dependencies: @@ -5825,7 +5836,6 @@ __metadata: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@react-native-community/netinfo": "npm:5.9.7" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -6291,7 +6301,6 @@ __metadata: dependencies: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-linear-gradient: "npm:2.5.6" languageName: unknown @@ -6304,7 +6313,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:1.0.0" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -6316,7 +6324,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -6334,7 +6341,6 @@ __metadata: dependencies: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" victory-native: "npm:^36.6.8" languageName: unknown @@ -6407,13 +6413,6 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.5.4": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 10/007c7bad22c5d799c8dd49c85b47d012a1fe3045be57447721e6afbd1d5be43237af1db62e26cb9b0d9ba812d2e4ca3bac82f6d7e016b6b88de06ee25ceb96e7 - languageName: node - linkType: hard - "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" @@ -6576,41 +6575,6 @@ __metadata: languageName: node linkType: hard -"bunyan-debug-stream@npm:^2.0.1": - version: 2.0.1 - resolution: "bunyan-debug-stream@npm:2.0.1" - dependencies: - colors: "npm:1.4.0" - exception-formatter: "npm:^1.0.4" - peerDependencies: - bunyan: "*" - checksum: 10/c42f5e9cd037e4cfe52d97ed916a9b5e7c268938de8bce0ee6ab7a36d4bc9f73d9b588eaff7449c268d34163c6cb7d58f293afe85998ad33f2960a479a0aeb1f - languageName: node - linkType: hard - -"bunyan@npm:^1.8.12": - version: 1.8.15 - resolution: "bunyan@npm:1.8.15" - dependencies: - dtrace-provider: "npm:~0.8" - moment: "npm:^2.19.3" - mv: "npm:~2" - safe-json-stringify: "npm:~1" - dependenciesMeta: - dtrace-provider: - optional: true - moment: - optional: true - mv: - optional: true - safe-json-stringify: - optional: true - bin: - bunyan: bin/bunyan - checksum: 10/676f4beca08b8a53c99773664abea325c54bb51bf78f6290980f082ae08d9792e04c78e354e56d50fe683bdc0afd612dd42baf45b41d9f7ab15dc38baaa1567d - languageName: node - linkType: hard - "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" @@ -6717,7 +6681,7 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": +"camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d @@ -6773,7 +6737,6 @@ __metadata: "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@types/react-native-snap-carousel": "npm:^3.7.4" deprecated-react-native-prop-types: "npm:^4.0.0" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-snap-carousel: "npm:^3.9.1" languageName: unknown @@ -6855,17 +6818,6 @@ __metadata: languageName: node linkType: hard -"child-process-promise@npm:^2.2.0": - version: 2.2.1 - resolution: "child-process-promise@npm:2.2.1" - dependencies: - cross-spawn: "npm:^4.0.2" - node-version: "npm:^1.0.0" - promise-polyfill: "npm:^6.0.1" - checksum: 10/fb72dda7ee78099f106d57bf3d7cc3225c16c9ddfe8e364e3535a52396482ee81aecd3eff0da7131ca17b7ba9fcbb8af827da63a03f0c3262c76268696898642 - languageName: node - linkType: hard - "chokidar@npm:3.5.2": version: 3.5.2 resolution: "chokidar@npm:3.5.2" @@ -7102,7 +7054,7 @@ __metadata: languageName: node linkType: hard -"color-name@npm:^1.1.4, color-name@npm:~1.1.4": +"color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" checksum: 10/b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 @@ -7118,7 +7070,6 @@ __metadata: "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@types/tinycolor2": "npm:^1.4.1" deprecated-react-native-prop-types: "npm:^4.0.0" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-color: "npm:^0.0.10" react-native-slider: "npm:^0.11.0" @@ -7156,7 +7107,7 @@ __metadata: languageName: node linkType: hard -"colors@npm:1.4.0, colors@npm:^1.0.3": +"colors@npm:1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" checksum: 10/90b2d5465159813a3983ea72ca8cff75f784824ad70f2cc2b32c233e95bcfbcda101ebc6d6766bc50f57263792629bfb4f1f8a4dfbd1d240f229fc7f69b785fc @@ -7169,7 +7120,6 @@ __metadata: dependencies: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" victory-native: "npm:^36.6.8" languageName: unknown @@ -7548,16 +7498,6 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^4.0.2": - version: 4.0.2 - resolution: "cross-spawn@npm:4.0.2" - dependencies: - lru-cache: "npm:^4.0.1" - which: "npm:^1.2.9" - checksum: 10/7a384580d0534a55706a6b694b500f75e48511675021a4aac698c7144b0bf60c4e058a2add938322739f4d7e733920a4665bbf89681cd3632238622e3ea2fbb0 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -7637,13 +7577,6 @@ __metadata: languageName: node linkType: hard -"cssfontparser@npm:^1.2.1": - version: 1.2.1 - resolution: "cssfontparser@npm:1.2.1" - checksum: 10/952d487cddab591fb944f2a4c326a7736bc963784a6d92b6ad4051f3bf5ee49a732eff62e29a52ff085197cb07f5bd66525a2245ded7fd356113ac81be9238b9 - languageName: node - linkType: hard - "cssnano-preset-default@npm:^5.2.12": version: 5.2.12 resolution: "cssnano-preset-default@npm:5.2.12" @@ -7921,13 +7854,6 @@ __metadata: languageName: node linkType: hard -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: 10/b7d09b82652c39eead4d6678bb578e3bebd848add894b76d0f6b395bc45b2d692fb88d977e7cfb93c4ed6c119b05a1347cef261174916c2e75c0a8ca57da1809 - languageName: node - linkType: hard - "decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" @@ -8069,50 +7995,6 @@ __metadata: languageName: node linkType: hard -"detox@npm:^19.13.0": - version: 19.13.0 - resolution: "detox@npm:19.13.0" - dependencies: - ajv: "npm:^8.6.3" - bunyan: "npm:^1.8.12" - bunyan-debug-stream: "npm:^2.0.1" - chalk: "npm:^2.4.2" - child-process-promise: "npm:^2.2.0" - find-up: "npm:^4.1.0" - fs-extra: "npm:^4.0.2" - funpermaproxy: "npm:^1.0.1" - ini: "npm:^1.3.4" - lodash: "npm:^4.17.5" - minimist: "npm:^1.2.0" - proper-lockfile: "npm:^3.0.2" - resolve-from: "npm:^5.0.0" - sanitize-filename: "npm:^1.6.1" - semver: "npm:^7.0.0" - serialize-error: "npm:^8.0.1" - shell-quote: "npm:^1.7.2" - signal-exit: "npm:^3.0.3" - tail: "npm:^2.0.0" - telnet-client: "npm:1.2.8" - tempfile: "npm:^2.0.0" - which: "npm:^1.3.1" - ws: "npm:^7.0.0" - yargs: "npm:^16.0.3" - yargs-parser: "npm:^20.2.2" - yargs-unparser: "npm:^2.0.0" - peerDependencies: - jest: 26.0.x - 26.4.x || ^26.5.2 || 27.x.x || 28.x.x || 29.x.x - mocha: ">=6.0.0" - peerDependenciesMeta: - jest: - optional: true - mocha: - optional: true - bin: - detox: local-cli/cli.js - checksum: 10/b0d7a1ce7c015e111970ff1be7c42c4d0b7a7a4425c3a0573244db83311489c973116477d04e172ca4c1071b18f9de36980aefc753cbb7f0acc50758c3cec3a4 - languageName: node - linkType: hard - "diff-sequences@npm:^29.2.0": version: 29.2.0 resolution: "diff-sequences@npm:29.2.0" @@ -8283,16 +8165,6 @@ __metadata: languageName: node linkType: hard -"dtrace-provider@npm:~0.8": - version: 0.8.8 - resolution: "dtrace-provider@npm:0.8.8" - dependencies: - nan: "npm:^2.14.0" - node-gyp: "npm:latest" - checksum: 10/ab558f3bd04a91362a14ce4aeeaf4fac885d8762391612410c032bcf7bd0deed003c8faaf43f906c4ed87ff814893fb6dcc79e0c952d7967b325722b471b3775 - languageName: node - linkType: hard - "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -8947,15 +8819,6 @@ __metadata: languageName: node linkType: hard -"exception-formatter@npm:^1.0.4": - version: 1.0.7 - resolution: "exception-formatter@npm:1.0.7" - dependencies: - colors: "npm:^1.0.3" - checksum: 10/ad7325fae381639e34718d2e7e85931237784cd85546c8f4a3b223554dd877fa0612271ac799e22178964fe09636d4ff7945e69e93df91501e1aaee9af877a19 - languageName: node - linkType: hard - "execa@npm:^4.1.0": version: 4.1.0 resolution: "execa@npm:4.1.0" @@ -9232,7 +9095,6 @@ __metadata: "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@types/querystringify": "npm:^2.0.0" "@types/react-native-dialog": "npm:^5.5.0" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" querystringify: "npm:^2.1.1" react-native-dialog: "npm:9.2.2" @@ -9353,15 +9215,6 @@ __metadata: languageName: node linkType: hard -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: 10/72479e651c15eab53e25ce04c31bab18cfaac0556505cac19221dbbe85bbb9686bc76e4d397e89e5bf516ce667dcf818f8b07e585568edba55abc2bf1f698fb5 - languageName: node - linkType: hard - "flatted@npm:^3.1.0": version: 3.2.7 resolution: "flatted@npm:3.2.7" @@ -9377,7 +9230,6 @@ __metadata: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" deprecated-react-native-prop-types: "npm:^4.0.0" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-action-button: "npm:^2.8.5" languageName: unknown @@ -9445,17 +9297,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^4.0.2": - version: 4.0.3 - resolution: "fs-extra@npm:4.0.3" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^4.0.0" - universalify: "npm:^0.1.0" - checksum: 10/c1ab28ac6b19a1e37f9c0fb3a233b7333bd4d12ea2a514b5469ba956f022fa0e2aefa3b351d1117b80ed45495bb779427c8f64727c150bb1599c2ce9ab3b42ac - languageName: node - linkType: hard - "fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -9554,20 +9395,12 @@ __metadata: languageName: node linkType: hard -"funpermaproxy@npm:^1.0.1": - version: 1.1.0 - resolution: "funpermaproxy@npm:1.1.0" - checksum: 10/b5bd84fb4a3069aee96d0ee6f4088d0b7f02e28d45be8b20624573bb33d6708b5dc1e0a6ea6a81823a2d7403e1a33d7e7b2d72f07889f69b4eb028c7a5a82f21 - languageName: node - linkType: hard - "gallery-native@workspace:packages/pluggableWidgets/gallery-native": version: 0.0.0-use.local resolution: "gallery-native@workspace:packages/pluggableWidgets/gallery-native" dependencies: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-device-info: "npm:13.0.0" languageName: unknown @@ -9580,7 +9413,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-svg: "npm:15.7.1" languageName: unknown @@ -9663,13 +9495,6 @@ __metadata: languageName: node linkType: hard -"get-stdin@npm:^5.0.1": - version: 5.0.1 - resolution: "get-stdin@npm:5.0.1" - checksum: 10/f9784638ad3e68a0a8bdc031aedf0fca749843cd134956fbd4f3bbac17c359e0fb9210343fcbed72ee79fb19d8e4c49b7a6e742cc5d44e94ac1405e9371d4b3e - languageName: node - linkType: hard - "get-stream@npm:^5.0.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -9764,19 +9589,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^6.0.1": - version: 6.0.4 - resolution: "glob@npm:6.0.4" - dependencies: - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:2 || 3" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10/b8fec415f772983ffbf7823c2c87aedd50aacf4f8db1868a11535db1023cf5180c9dd7487ce08f85bd64ed5cfd4268cea1a1c61c2772523d7d6194177d6d53a8 - languageName: node - linkType: hard - "glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:~7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -9855,13 +9667,6 @@ __metadata: languageName: node linkType: hard -"glur@npm:^1.1.2": - version: 1.1.2 - resolution: "glur@npm:1.1.2" - checksum: 10/3d991f38cb352886723a84b00310673312c01573c928ef49a52e74ec693cedaa95117ef6f7e0dd5167b40a3383355042ed721cfaabd54b0e9532d01d7ff72861 - languageName: node - linkType: hard - "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -9871,7 +9676,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.4, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" checksum: 10/0c83c52b62c68a944dcfb9d66b0f9f10f7d6e3d081e8067b9bfdc9e5f3a8896584d576036f82915773189eec1eba599397fc620e75c03c0610fb3d67c6713c1a @@ -10263,7 +10068,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-fast-image: "npm:8.3.2" react-native-svg: "npm:15.7.1" @@ -10426,7 +10230,6 @@ __metadata: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@react-native-async-storage/async-storage": "npm:2.0.0" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-device-info: "npm:13.0.0" languageName: unknown @@ -10933,16 +10736,6 @@ __metadata: languageName: node linkType: hard -"jest-canvas-mock@npm:^2.5.2": - version: 2.5.2 - resolution: "jest-canvas-mock@npm:2.5.2" - dependencies: - cssfontparser: "npm:^1.2.1" - moo-color: "npm:^1.0.2" - checksum: 10/094e2e1c773c658fab7e91e9279027fc38a55060865b5b6a3c9acc47fc912fb9d3451ab4fdf544d016578f77b975626707c3a62e396575aa878f46d939c7ca5e - languageName: node - linkType: hard - "jest-changed-files@npm:^29.4.3": version: 29.4.3 resolution: "jest-changed-files@npm:29.4.3" @@ -11137,27 +10930,6 @@ __metadata: languageName: node linkType: hard -"jest-environment-jsdom@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-jsdom@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/jsdom": "npm:^20.0.0" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jsdom: "npm:^20.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 10/23bbfc9bca914baef4b654f7983175a4d49b0f515a5094ebcb8f819f28ec186f53c0ba06af1855eac04bab1457f4ea79dae05f70052cf899863e8096daa6e0f5 - languageName: node - linkType: hard - "jest-environment-node@npm:^29.4.3": version: 29.4.3 resolution: "jest-environment-node@npm:29.4.3" @@ -11253,27 +11025,6 @@ __metadata: languageName: node linkType: hard -"jest-image-snapshot@npm:^6.4.0": - version: 6.4.0 - resolution: "jest-image-snapshot@npm:6.4.0" - dependencies: - chalk: "npm:^4.0.0" - get-stdin: "npm:^5.0.1" - glur: "npm:^1.1.2" - lodash: "npm:^4.17.4" - pixelmatch: "npm:^5.1.0" - pngjs: "npm:^3.4.0" - rimraf: "npm:^2.6.2" - ssim.js: "npm:^3.1.1" - peerDependencies: - jest: ">=20 <=29" - peerDependenciesMeta: - jest: - optional: true - checksum: 10/7afe59c0f4449429cd1f9e09d7bbf394cba1f711feaac376f7defddb33f287d2d13e3cd8bad3537d50581335968e384b0e9a7a227f8b78189ad508c994a19964 - languageName: node - linkType: hard - "jest-jasmine2@npm:^29.0.3": version: 29.4.1 resolution: "jest-jasmine2@npm:29.4.1" @@ -12290,7 +12041,6 @@ __metadata: dependencies: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" victory-native: "npm:^36.6.8" languageName: unknown @@ -12564,7 +12314,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.17.5, lodash@npm:~4.17.21": +"lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:~4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -12624,16 +12374,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^4.0.1": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" - dependencies: - pseudomap: "npm:^1.0.2" - yallist: "npm:^2.1.2" - checksum: 10/9ec7d73f11a32cba0e80b7a58fdf29970814c0c795acaee1a6451ddfd609bae6ef9df0837f5bbeabb571ecd49c1e2d79e10e9b4ed422cfba17a0cb6145b018a9 - languageName: node - linkType: hard - "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -12775,7 +12515,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" prop-types: "npm:^15.7.2" react-native-geocoder: "npm:0.5.0" @@ -13266,7 +13005,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:2 || 3, minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": +"minimatch@npm:^3.0.0, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -13421,7 +13160,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1": +"mkdirp@npm:^0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -13701,7 +13440,7 @@ __metadata: languageName: unknown linkType: soft -"moment@npm:^2.19.3, moment@npm:~2.29.3": +"moment@npm:~2.29.3": version: 2.29.4 resolution: "moment@npm:2.29.4" checksum: 10/157c5af5a0ba8196e577bc67feb583303191d21ba1f7f2af30b3b40d4c63a64d505ba402be2a1454832082fac6be69db1e0d186c3279dae191e6634b0c33705c @@ -13715,15 +13454,6 @@ __metadata: languageName: node linkType: hard -"moo-color@npm:^1.0.2": - version: 1.0.3 - resolution: "moo-color@npm:1.0.3" - dependencies: - color-name: "npm:^1.1.4" - checksum: 10/a0c48927214d2acb02b3fd1a2b1439fa8130edbda7406594748146e398c22336af855b7d348ba9e657995909c9099084635a199db1e2098efd7117d92eb2cb59 - languageName: node - linkType: hard - "moo@npm:^0.5.0": version: 0.5.2 resolution: "moo@npm:0.5.2" @@ -13759,26 +13489,6 @@ __metadata: languageName: node linkType: hard -"mv@npm:~2": - version: 2.1.1 - resolution: "mv@npm:2.1.1" - dependencies: - mkdirp: "npm:~0.5.1" - ncp: "npm:~2.0.0" - rimraf: "npm:~2.4.0" - checksum: 10/59d4b5ebff6c265b452d6630ae8873d573c82e36fdc1ed9c34c7901a0bf2d3d357022f49db8e9bded127b743f709c7ef7befec249a2b3967578d649a8029aa06 - languageName: node - linkType: hard - -"nan@npm:^2.14.0": - version: 2.17.0 - resolution: "nan@npm:2.17.0" - dependencies: - node-gyp: "npm:latest" - checksum: 10/bba1efee2475afb0cce154300b554863fb4bb0a683a28f5d0fa7390794b3b4381356aabeab6472c70651d9c8a2830e7595963f3ec0aa2008e5c4d83dbeb820fa - languageName: node - linkType: hard - "nanoflow-actions-native@workspace:packages/jsActions/nanoflow-actions-native": version: 0.0.0-use.local resolution: "nanoflow-actions-native@workspace:packages/jsActions/nanoflow-actions-native" @@ -13809,6 +13519,7 @@ __metadata: version: 0.0.0-use.local resolution: "native-widgets@workspace:." dependencies: + "@actions/core": "npm:^1.6.0" "@commitlint/cli": "npm:^18.6.1" "@commitlint/config-conventional": "npm:^18.6.3" "@react-native/babel-preset": "npm:0.75.4" @@ -13821,8 +13532,6 @@ __metadata: "@types/concurrently": "npm:^6.3.0" "@types/enzyme": "npm:^3.10.18" "@types/jasmine": "npm:^3.10.18" - "@types/jest": "npm:^29.5.13" - "@types/jest-image-snapshot": "npm:^6.4.0" "@types/mime": "npm:^2.0.3" "@types/node": "npm:^20.16.14" "@types/react": "npm:~18.0.38" @@ -13833,22 +13542,19 @@ __metadata: "@types/xml2js": "npm:^0.4.14" cross-env: "npm:^7.0.3" deepmerge: "npm:^4.3.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" eslint-plugin-prettier: "npm:4.2.1" husky: "npm:^8.0.3" identity-obj-proxy: "npm:^3.0.0" image-js: "npm:^0.35.6" - jest: "npm:^29.4.1" - jest-canvas-mock: "npm:^2.5.2" - jest-environment-jsdom: "npm:^29.7.0" - jest-image-snapshot: "npm:^6.4.0" lint-staged: "npm:^10.5.4" mendix-client: "npm:^7.15.8" patch-package: "npm:^8.0.0" + pixelmatch: "npm:^5.3.0" + pngjs: "npm:^6.0.0" prettier: "npm:^2.8.8" pretty-quick: "npm:^3.3.1" - react-dom: "npm:18.2.0" + react-dom: "npm:18.3.1" recursive-copy: "npm:^2.0.14" rollup: "npm:^2.79.2" ts-node: "npm:^10.9.2" @@ -13862,15 +13568,6 @@ __metadata: languageName: node linkType: hard -"ncp@npm:~2.0.0": - version: 2.0.0 - resolution: "ncp@npm:2.0.0" - bin: - ncp: ./bin/ncp - checksum: 10/b2a915b79eac43ababf256d0ba515b9dc5da2072b133946ccd168aab17e364bf0fcc7bcc68f2f3105aeeef389d56aeaedbb827122f7c4434104ae2aae1e002a6 - languageName: node - linkType: hard - "nearley@npm:^2.7.10": version: 2.20.1 resolution: "nearley@npm:2.20.1" @@ -14032,13 +13729,6 @@ __metadata: languageName: node linkType: hard -"node-version@npm:^1.0.0": - version: 1.2.0 - resolution: "node-version@npm:1.2.0" - checksum: 10/2c4dee977ca09d9000abcfd3eeda2cca47da93ca9ec6a3a928e376c3a424a67e28dc368e0b0ba841611923cd1f50e5a09743a669d5fe6cf6641476a720341fad - languageName: node - linkType: hard - "nopt@npm:^6.0.0": version: 6.0.0 resolution: "nopt@npm:6.0.0" @@ -14662,7 +14352,6 @@ __metadata: dependencies: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" victory-native: "npm:^36.6.8" languageName: unknown @@ -14703,7 +14392,7 @@ __metadata: languageName: node linkType: hard -"pixelmatch@npm:^5.1.0": +"pixelmatch@npm:^5.3.0": version: 5.3.0 resolution: "pixelmatch@npm:5.3.0" dependencies: @@ -14751,13 +14440,6 @@ __metadata: languageName: node linkType: hard -"pngjs@npm:^3.4.0": - version: 3.4.0 - resolution: "pngjs@npm:3.4.0" - checksum: 10/0e9227a413ce4b4f5ebae4465b366efc9ca545c74304f3cc30ba2075159eb12f01a6a821c4f61f2b048bd85356abbe6d2109df7052a9030ef4d7a42d99760af6 - languageName: node - linkType: hard - "pngjs@npm:^5.0.0": version: 5.0.0 resolution: "pngjs@npm:5.0.0" @@ -14780,7 +14462,6 @@ __metadata: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@types/react-native-material-menu": "npm:^1.0.6" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-material-menu: "npm:~1.2.0" languageName: unknown @@ -15376,7 +15057,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:1.0.0" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-progress: "npm:^5.0.1" languageName: unknown @@ -15389,7 +15069,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-progress: "npm:^5.0.1" languageName: unknown @@ -15409,13 +15088,6 @@ __metadata: languageName: node linkType: hard -"promise-polyfill@npm:^6.0.1": - version: 6.1.0 - resolution: "promise-polyfill@npm:6.1.0" - checksum: 10/e9fc1f67771539bfa9b5cbfda1e77c6e4bd5bdbcadb74284c6dac50a293bb415d4ff4595fdb343640651f10025df4afe63e5500d32d061f604c3cf51fc830466 - languageName: node - linkType: hard - "promise-retry@npm:^2.0.1": version: 2.0.1 resolution: "promise-retry@npm:2.0.1" @@ -15472,17 +15144,6 @@ __metadata: languageName: node linkType: hard -"proper-lockfile@npm:^3.0.2": - version: 3.2.0 - resolution: "proper-lockfile@npm:3.2.0" - dependencies: - graceful-fs: "npm:^4.1.11" - retry: "npm:^0.12.0" - signal-exit: "npm:^3.0.2" - checksum: 10/5025248895fbd69f115cdfe9a5cd63627357eefe67aa95d95175d87249dd5fe34a116bcc1d8b7cd126b24c8e4c875777f48ccdb5d2962079ee09a6e50f6ace72 - languageName: node - linkType: hard - "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" @@ -15490,13 +15151,6 @@ __metadata: languageName: node linkType: hard -"pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 10/856c0aae0ff2ad60881168334448e898ad7a0e45fe7386d114b150084254c01e200c957cf378378025df4e052c7890c5bd933939b0e0d2ecfcc1dc2f0b2991f5 - languageName: node - linkType: hard - "psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" @@ -15535,7 +15189,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:1.0.0" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-qrcode-svg: "npm:6.0.6" react-native-svg: "npm:15.7.1" @@ -15593,7 +15246,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -15649,7 +15301,6 @@ __metadata: "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@ptomasroos/react-native-multi-slider": "npm:^1.0.0" "@types/ptomasroos__react-native-multi-slider": "npm:^0.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" prop-types: "npm:^15.7.2" languageName: unknown @@ -15663,7 +15314,6 @@ __metadata: "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@types/react-native-star-rating": "npm:^1.1.6" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-animatable: "npm:^1.3.2" react-native-vector-icons: "npm:10.2.0" @@ -16539,7 +16189,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -16741,17 +16390,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:~2.4.0": - version: 2.4.5 - resolution: "rimraf@npm:2.4.5" - dependencies: - glob: "npm:^6.0.1" - bin: - rimraf: ./bin.js - checksum: 10/884c45de4195e4ce5ab6d8782d073302291a50004d1d79e628cf04b0a3594c882314b0639960333211cebe4ac888755c803cd09a5151d30e88a070af16b1573d - languageName: node - linkType: hard - "rimraf@npm:~2.6.2": version: 2.6.3 resolution: "rimraf@npm:2.6.3" @@ -17005,13 +16643,6 @@ __metadata: languageName: node linkType: hard -"safe-json-stringify@npm:~1": - version: 1.2.0 - resolution: "safe-json-stringify@npm:1.2.0" - checksum: 10/7121e746faf1ac73f586210b84b71f483b5bc89a3d6271f1628b89217221c8256566a91a3a26eb82def531184addf67dc6c236cb2f7e100bf843086c1b23c1b3 - languageName: node - linkType: hard - "safe-regex-test@npm:^1.0.0": version: 1.0.0 resolution: "safe-regex-test@npm:1.0.0" @@ -17030,15 +16661,6 @@ __metadata: languageName: node linkType: hard -"sanitize-filename@npm:^1.6.1": - version: 1.6.3 - resolution: "sanitize-filename@npm:1.6.3" - dependencies: - truncate-utf8-bytes: "npm:^1.0.0" - checksum: 10/1c162e2cffa797571221c3ed9fe796fa8c6eabb0812418b52a839e4fc63ab130093eb546ec39e1b94b8d3511c0d7de81db3e67906a7e76d7a7bcb6fbab4ed961 - languageName: node - linkType: hard - "sass@npm:^1.43.4": version: 1.55.0 resolution: "sass@npm:1.55.0" @@ -17123,7 +16745,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.0.0, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": +"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -17198,15 +16820,6 @@ __metadata: languageName: node linkType: hard -"serialize-error@npm:^8.0.1": - version: 8.1.0 - resolution: "serialize-error@npm:8.1.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/2eef236d50edd2d7926e602c14fb500dc3a125ee52e9f08f67033181b8e0be5d1122498bdf7c23c80683cddcad083a27974e9e7111ce23165f4d3bcdd6d65102 - languageName: node - linkType: hard - "serialize-javascript@npm:^4.0.0": version: 4.0.0 resolution: "serialize-javascript@npm:4.0.0" @@ -17306,13 +16919,6 @@ __metadata: languageName: node linkType: hard -"shell-quote@npm:^1.7.2": - version: 1.7.4 - resolution: "shell-quote@npm:1.7.4" - checksum: 10/e5059820d0ffc7e9298f9ee4be528cd5820c45a87d318dac5ad4b62066069fe4e62520801af639d8723b0a36af621ef6330adf8ce532cfaeb0c874c691117f1b - languageName: node - linkType: hard - "shelljs@npm:^0.8.4, shelljs@npm:^0.8.5": version: 0.8.5 resolution: "shelljs@npm:0.8.5" @@ -17363,7 +16969,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-signature-canvas: "npm:3.4.0" react-native-webview: "npm:11.26.1" @@ -17451,7 +17056,6 @@ __metadata: "@mendix/pluggable-widgets-tools": "npm:~10.0.1" "@ptomasroos/react-native-multi-slider": "npm:^1.0.0" "@types/ptomasroos__react-native-multi-slider": "npm:^0.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" prop-types: "npm:^15.7.2" languageName: unknown @@ -17635,13 +17239,6 @@ __metadata: languageName: node linkType: hard -"ssim.js@npm:^3.1.1": - version: 3.5.0 - resolution: "ssim.js@npm:3.5.0" - checksum: 10/fface2e7f0317a4a612d5d00c82ff3c92d4a45638457468be1775bdf77a3d8d9453d457373af9700978f66ecc9fc56237c4b1379246d86b3af7276ab63c8dec3 - languageName: node - linkType: hard - "ssri@npm:^9.0.0": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -17966,7 +17563,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" languageName: unknown linkType: soft @@ -17991,13 +17587,6 @@ __metadata: languageName: node linkType: hard -"tail@npm:^2.0.0": - version: 2.2.4 - resolution: "tail@npm:2.2.4" - checksum: 10/ee80ae6393af030304fe4613c1a8781ae3a2129bfd979725e5edc25a06a9dd3a6a4520774998707010057771c64a6e695a264eee6ec2889f33003fb576694f2a - languageName: node - linkType: hard - "tar-stream@npm:^2.1.0": version: 2.2.0 resolution: "tar-stream@npm:2.2.0" @@ -18025,22 +17614,6 @@ __metadata: languageName: node linkType: hard -"telnet-client@npm:1.2.8": - version: 1.2.8 - resolution: "telnet-client@npm:1.2.8" - dependencies: - bluebird: "npm:^3.5.4" - checksum: 10/bd210a3f4d9d1640cca46a8c39574e3d5f951ed6cf5dff92e86003be99fdfd801ba46bcf953664de44afbabfd91b6918a0a26d938eccac3e3b4832fb6760a96f - languageName: node - linkType: hard - -"temp-dir@npm:^1.0.0": - version: 1.0.0 - resolution: "temp-dir@npm:1.0.0" - checksum: 10/cb2b58ddfb12efa83e939091386ad73b425c9a8487ea0095fe4653192a40d49184a771a1beba99045fbd011e389fd563122d79f54f82be86a55620667e08a6b2 - languageName: node - linkType: hard - "temp@npm:^0.8.4": version: 0.8.4 resolution: "temp@npm:0.8.4" @@ -18050,16 +17623,6 @@ __metadata: languageName: node linkType: hard -"tempfile@npm:^2.0.0": - version: 2.0.0 - resolution: "tempfile@npm:2.0.0" - dependencies: - temp-dir: "npm:^1.0.0" - uuid: "npm:^3.0.1" - checksum: 10/9c8ab891c2af333fdc45404812dbcd71023e220dc90842c54042aafd9830e26ee2c7f4f85f949289f79b5a4b0f8049b01d5989383782d59f0a1713d344a16976 - languageName: node - linkType: hard - "terser@npm:^5.0.0": version: 5.15.1 resolution: "terser@npm:5.15.1" @@ -18212,7 +17775,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-segmented-control-tab: "npm:^3.4.0" languageName: unknown @@ -18269,15 +17831,6 @@ __metadata: languageName: node linkType: hard -"truncate-utf8-bytes@npm:^1.0.0": - version: 1.0.2 - resolution: "truncate-utf8-bytes@npm:1.0.2" - dependencies: - utf8-byte-length: "npm:^1.0.1" - checksum: 10/366e47a0e22cc271d37eb4e62820453fb877784b55b37218842758b7aa1d402eedd0f8833cfb5d6f7a6cae1535d84289bd5e32c4ee962d2a86962fb7038a6983 - languageName: node - linkType: hard - "ts-jest@npm:^29.0.0": version: 29.0.5 resolution: "ts-jest@npm:29.0.5" @@ -18409,6 +17962,13 @@ __metadata: languageName: node linkType: hard +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: 10/cf1ffed5e67159b901a924dbf94c989f20b2b3b65649cfbbe4b6abb35955ce2cf7433b23498bdb2c5530ab185b82190fce531597b3b4a649f06a907fc8702405 + languageName: node + linkType: hard + "two-product@npm:^1.0.2": version: 1.0.2 resolution: "two-product@npm:1.0.2" @@ -18536,6 +18096,15 @@ __metadata: languageName: node linkType: hard +"undici@npm:^5.25.4": + version: 5.28.5 + resolution: "undici@npm:5.28.5" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10/459cd84ab75fe90d696fa2634a8b5b23f9e1080b27236c6809bd74e51862be85df6d95b4a8fed3ee42554495008cb3c05f1bc9d4a1807478f433cca567003d70 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -18681,13 +18250,6 @@ __metadata: languageName: node linkType: hard -"utf8-byte-length@npm:^1.0.1": - version: 1.0.4 - resolution: "utf8-byte-length@npm:1.0.4" - checksum: 10/f188ca076ec094d58e7009fcc32623c5830c7f0f3e15802bfa4fdd1e759454a481fc4ac05e0fa83b7736e77af628a9ee0e57dcc89683d688fde3811473e42143 - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -18702,15 +18264,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.0.1": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 10/4f2b86432b04cc7c73a0dd1bcf11f1fc18349d65d2e4e32dd0fc658909329a1e0cc9244aa93f34c0cccfdd5ae1af60a149251a5f420ec3ac4223a3dab198fb2e - languageName: node - linkType: hard - "uuid@npm:^7.0.3": version: 7.0.3 resolution: "uuid@npm:7.0.3" @@ -19322,7 +18875,6 @@ __metadata: "@mendix/piw-native-utils-internal": "npm:*" "@mendix/piw-utils-internal": "npm:*" "@mendix/pluggable-widgets-tools": "npm:~10.0.1" - detox: "npm:^19.13.0" eslint: "npm:^7.32.0" react-native-webview: "npm:11.26.1" languageName: unknown @@ -19419,17 +18971,6 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9, which@npm:^1.3.1": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: "npm:^2.0.0" - bin: - which: ./bin/which - checksum: 10/549dcf1752f3ee7fbb64f5af2eead4b9a2f482108b7de3e85c781d6c26d8cf6a52d37cfbe0642a155fa6470483fe892661a859c03157f24c669cf115f3bbab5e - languageName: node - linkType: hard - "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -19541,7 +19082,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^7.0.0, ws@npm:^7.4.3": +"ws@npm:^7.4.3": version: 7.5.9 resolution: "ws@npm:7.5.9" peerDependencies: @@ -19673,13 +19214,6 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^2.1.2": - version: 2.1.2 - resolution: "yallist@npm:2.1.2" - checksum: 10/75fc7bee4821f52d1c6e6021b91b3e079276f1a9ce0ad58da3c76b79a7e47d6f276d35e206a96ac16c1cf48daee38a8bb3af0b1522a3d11c8ffe18f898828832 - languageName: node - linkType: hard - "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -19734,18 +19268,6 @@ __metadata: languageName: node linkType: hard -"yargs-unparser@npm:^2.0.0": - version: 2.0.0 - resolution: "yargs-unparser@npm:2.0.0" - dependencies: - camelcase: "npm:^6.0.0" - decamelize: "npm:^4.0.0" - flat: "npm:^5.0.2" - is-plain-obj: "npm:^2.1.0" - checksum: 10/68f9a542c6927c3768c2f16c28f71b19008710abd6b8f8efbac6dcce26bbb68ab6503bed1d5994bdbc2df9a5c87c161110c1dfe04c6a3fe5c6ad1b0e15d9a8a3 - languageName: node - linkType: hard - "yargs@npm:^15.1.0, yargs@npm:^15.3.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" @@ -19765,7 +19287,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.0.3, yargs@npm:^16.1.1, yargs@npm:^16.2.0": +"yargs@npm:^16.1.1, yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: