From 8509287b875d23f07f46330e1b9080dd5d3356d2 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 18 Aug 2023 16:49:27 +0100 Subject: [PATCH 001/201] Add analyze flutter packages job --- .github/workflows/main.yml | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000..8fffc581 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,35 @@ +name: CI +on: push + +env: + flutter-version: '3.x' + +jobs: + analyze: + name: Analyze ${{ matrix.package }} package + runs-on: ubuntu-latest + + strategy: + matrix: + package: + - auth0_flutter + - auth0_flutter_platform_interface + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.flutter-version }} + channel: stable + + - name: Add example/.env + if: ${{ matrix.package == 'auth0_flutter' }} + working-directory: ${{ matrix.package }} + run: cp example/.env.example example/.env + + - name: Analize package + working-directory: ${{ matrix.package }} + run: flutter analyze From 5e543b3c9e9eedb3ebd95283abb3f21c0073f184 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 18 Aug 2023 21:41:55 +0100 Subject: [PATCH 002/201] Enable caching of pub dev packages --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8fffc581..6d8e2a57 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,6 +24,7 @@ jobs: with: flutter-version: ${{ env.flutter-version }} channel: stable + cache: true - name: Add example/.env if: ${{ matrix.package == 'auth0_flutter' }} From 9de121e32de043bc4cd1cdc951fe7487e213037a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 18 Aug 2023 21:56:13 +0100 Subject: [PATCH 003/201] Add test Flutter packages job --- .github/workflows/main.yml | 64 +++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6d8e2a57..0b2c76bd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,31 +6,71 @@ env: jobs: analyze: - name: Analyze ${{ matrix.package }} package + name: Analyze Flutter packages runs-on: ubuntu-latest - strategy: - matrix: - package: - - auth0_flutter - - auth0_flutter_platform_interface - steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - name: Install Flutter - uses: subosito/flutter-action@v2 + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa with: flutter-version: ${{ env.flutter-version }} channel: stable cache: true - name: Add example/.env - if: ${{ matrix.package == 'auth0_flutter' }} - working-directory: ${{ matrix.package }} + working-directory: auth0_flutter run: cp example/.env.example example/.env - - name: Analize package - working-directory: ${{ matrix.package }} + - name: Analize auth0_flutter package + working-directory: auth0_flutter + run: flutter analyze + + - name: Analize auth0_flutter_platform_interface package + working-directory: auth0_flutter_platform_interface run: flutter analyze + + test-flutter: + name: Test Flutter packages + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter-version }} + channel: stable + cache: true + + - name: Add example/.env + working-directory: auth0_flutter + run: cp example/.env.example example/.env + + - name: Test auth0_flutter package + working-directory: auth0_flutter + run: | + flutter test --tags browser --platform chrome + flutter test --coverage --exclude-tags browser + + - name: Test auth0_flutter_platform_interface package + working-directory: auth0_flutter_platform_interface + run: flutter test --coverage + + - name: Upload coverage report for auth0_flutter + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + name: Auth0 Flutter + flags: auth0_flutter + files: ./auth0_flutter/coverage/lcov.info + + - name: Upload coverage report for auth0_flutter_platform_interface + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + name: Auth0 Flutter + flags: auth0_flutter_platform_interface + files: ./auth0_flutter_platform_interface/coverage/lcov.info From 3ec72643566ad9799d75c8413029e4bb69fb6429 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 18 Aug 2023 21:57:49 +0100 Subject: [PATCH 004/201] Cancel workflows on failure --- .github/workflows/main.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0b2c76bd..ffdae7d6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,11 +27,15 @@ jobs: - name: Analize auth0_flutter package working-directory: auth0_flutter run: flutter analyze - + - name: Analize auth0_flutter_platform_interface package working-directory: auth0_flutter_platform_interface run: flutter analyze + - name: Cancel wokflow on failure + uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 + if: ${{ failure() }} + test-flutter: name: Test Flutter packages runs-on: ubuntu-latest @@ -56,7 +60,7 @@ jobs: run: | flutter test --tags browser --platform chrome flutter test --coverage --exclude-tags browser - + - name: Test auth0_flutter_platform_interface package working-directory: auth0_flutter_platform_interface run: flutter test --coverage @@ -74,3 +78,7 @@ jobs: name: Auth0 Flutter flags: auth0_flutter_platform_interface files: ./auth0_flutter_platform_interface/coverage/lcov.info + + - name: Cancel wokflow on failure + uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 + if: ${{ failure() }} From e080e98eca78e9ae5a21d3148a7e17a6978e20c4 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 18 Aug 2023 22:30:34 +0100 Subject: [PATCH 005/201] Add dependabot.yml --- .github/dependabot.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..5b1b32fe --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 + +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: daily From ece36d92a609cfe64d3ab8e3309029c89bab42de Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 13:30:37 +0100 Subject: [PATCH 006/201] Add basic iOS test flow --- .github/workflows/main.yml | 59 +++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ffdae7d6..c69e6244 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -78,7 +78,64 @@ jobs: name: Auth0 Flutter flags: auth0_flutter_platform_interface files: ./auth0_flutter_platform_interface/coverage/lcov.info - + + - name: Cancel wokflow on failure + uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 + if: ${{ failure() }} + + test-ios: + name: Test iOS native code + runs-on: macos-latest + + env: + xcode: '14.2' + simulator: iPhone 14 + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter-version }} + channel: stable + cache: true + + - name: Setup Xcode + uses: mxcl/xcodebuild@6e60022a0cbe8c89278be2dd1773a2f68e7c5c87 + with: + xcode: ${{ env.xcode }} + action: none + + - name: Set Ruby version + working-directory: auth0_flutter_platform_interface + run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version + shell: bash + + - name: Set up Ruby + uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 + with: + bundler-cache: true + cache-version: 1 + working-directory: auth0_flutter/example/ios + + - name: Install pods + working-directory: auth0_flutter/example/ios + run: bundle exec pod install + + - name: Set .env + working-directory: auth0_flutter/example/ios + run: printf '%s\n%s\n%s' "AUTH0_DOMAIN=$AUTH0_DOMAIN" "AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID" 'AUTH0_CUSTOM_SCHEME=demo' >> ../.env + + - name: Run iOS unit tests + working-directory: auth0_flutter/example/ios + run: xcodebuild test -scheme Runner -workspace Runner.workspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | xcpretty + + - name: Run iOS smoke tests + working-directory: auth0_flutter/example/ios + run: xcodebuild test -scheme Runner -workspace Runner.workspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | xcpretty + - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 if: ${{ failure() }} From 198f18ef84f388357df611bde8820c7ab863cf74 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 13:33:08 +0100 Subject: [PATCH 007/201] Fix working directory --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c69e6244..027c632b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -109,7 +109,7 @@ jobs: action: none - name: Set Ruby version - working-directory: auth0_flutter_platform_interface + working-directory: auth0_flutter/example/ios run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version shell: bash From 12ee06a3a63a85d8292413c18e9cb686970d8737 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 13:41:49 +0100 Subject: [PATCH 008/201] Fix working dir of ruby step --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 027c632b..69630b5d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -109,11 +109,11 @@ jobs: action: none - name: Set Ruby version - working-directory: auth0_flutter/example/ios + working-directory: auth0_flutter/example run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version shell: bash - - name: Set up Ruby + - name: Install pods uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 with: bundler-cache: true From d1c3a2df9ac7d836b01ddd4b104528e83dff5e25 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 13:43:56 +0100 Subject: [PATCH 009/201] Use the same working dir for ruby action --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 69630b5d..c9261f10 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -113,12 +113,12 @@ jobs: run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version shell: bash - - name: Install pods + - name: Set up ruby uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 with: bundler-cache: true cache-version: 1 - working-directory: auth0_flutter/example/ios + working-directory: auth0_flutter/example - name: Install pods working-directory: auth0_flutter/example/ios From e649fd66f896c80386f4a59a59fc85f5307b382a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 13:47:25 +0100 Subject: [PATCH 010/201] Bump ruby cache version --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c9261f10..c399c4fe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -113,11 +113,11 @@ jobs: run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version shell: bash - - name: Set up ruby + - name: Set up Ruby uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 with: bundler-cache: true - cache-version: 1 + cache-version: 2 working-directory: auth0_flutter/example - name: Install pods From d2e69e863a997738b1c1168e140bf9c2f575d62b Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 13:59:39 +0100 Subject: [PATCH 011/201] Renerate Gemfile.lock --- .github/workflows/main.yml | 2 +- auth0_flutter/example/Gemfile.lock | 22 +++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c399c4fe..8760d9c5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -117,7 +117,7 @@ jobs: uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 with: bundler-cache: true - cache-version: 2 + cache-version: 1 working-directory: auth0_flutter/example - name: Install pods diff --git a/auth0_flutter/example/Gemfile.lock b/auth0_flutter/example/Gemfile.lock index c9666a4a..38866cea 100644 --- a/auth0_flutter/example/Gemfile.lock +++ b/auth0_flutter/example/Gemfile.lock @@ -1,9 +1,9 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.5) + CFPropertyList (3.0.6) rexml - activesupport (7.0.4.3) + activesupport (7.0.7) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -13,19 +13,19 @@ GEM clamp (1.3.2) colored2 (3.1.2) concurrent-ruby (1.2.2) - i18n (1.12.0) + i18n (1.14.1) concurrent-ruby (~> 1.0) - mini_portile2 (2.8.1) - minitest (5.18.0) + mini_portile2 (2.8.4) + minitest (5.19.0) nanaimo (0.3.0) - nokogiri (1.14.3) - mini_portile2 (~> 2.8.0) + nokogiri (1.15.4) + mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.14.3-x86_64-darwin) + nokogiri (1.15.4-x86_64-darwin) racc (~> 1.4) - racc (1.6.2) - rexml (3.2.5) - slather (2.7.3) + racc (1.7.1) + rexml (3.2.6) + slather (2.7.4) CFPropertyList (>= 2.2, < 4) activesupport clamp (~> 1.3) From 55700c4d95cf2b88f5643e7d0e91229c0ee5474b Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 14:04:53 +0100 Subject: [PATCH 012/201] Run `flutter pub get` before installing pods --- .github/workflows/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8760d9c5..c108ca9f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -120,6 +120,10 @@ jobs: cache-version: 1 working-directory: auth0_flutter/example + - name: Install Flutter dependencies + working-directory: auth0_flutter/example + run: flutter pub get + - name: Install pods working-directory: auth0_flutter/example/ios run: bundle exec pod install From f78d20c178e52f6e8ebd05357f05c12024102774 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 14:26:11 +0100 Subject: [PATCH 013/201] Set ruby version inside ios dir as well --- .github/workflows/main.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c108ca9f..a347d9fb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: - name: Set Ruby version working-directory: auth0_flutter/example - run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version + run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version && cp .ruby-version ios/.ruby-version shell: bash - name: Set up Ruby @@ -120,13 +120,9 @@ jobs: cache-version: 1 working-directory: auth0_flutter/example - - name: Install Flutter dependencies - working-directory: auth0_flutter/example - run: flutter pub get - - name: Install pods working-directory: auth0_flutter/example/ios - run: bundle exec pod install + run: echo "$BUNDLE_GEMFILE" && bundle exec pod install - name: Set .env working-directory: auth0_flutter/example/ios From 57ab709b6be4fcfc46290b0fb155c036efc272ed Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 14:39:18 +0100 Subject: [PATCH 014/201] Specify Gemfile using `BUNDLE_GEMFILE` --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a347d9fb..659aea1c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -110,7 +110,7 @@ jobs: - name: Set Ruby version working-directory: auth0_flutter/example - run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version && cp .ruby-version ios/.ruby-version + run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version shell: bash - name: Set up Ruby @@ -122,7 +122,7 @@ jobs: - name: Install pods working-directory: auth0_flutter/example/ios - run: echo "$BUNDLE_GEMFILE" && bundle exec pod install + run: BUNDLE_GEMFILE=../Gemfile bundle exec pod install - name: Set .env working-directory: auth0_flutter/example/ios From ec526cfd7230f11ccfd39967284f67beb915e383 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 17:36:42 +0100 Subject: [PATCH 015/201] Use `BUNDLE_PATH` --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 659aea1c..5338930e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -121,8 +121,10 @@ jobs: working-directory: auth0_flutter/example - name: Install pods + env: + BUNDLE_PATH: ../vendor/bundle working-directory: auth0_flutter/example/ios - run: BUNDLE_GEMFILE=../Gemfile bundle exec pod install + run: bundle exec pod install - name: Set .env working-directory: auth0_flutter/example/ios From 255ca69b17bd4492d3b3817179f31450bbcbef2d Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 17:41:56 +0100 Subject: [PATCH 016/201] Show installed gems --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5338930e..c9f97065 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -124,7 +124,7 @@ jobs: env: BUNDLE_PATH: ../vendor/bundle working-directory: auth0_flutter/example/ios - run: bundle exec pod install + run: bundle exec gem query --local && gem query --local && pod install - name: Set .env working-directory: auth0_flutter/example/ios From 99f2bf188a3c252770a0f044110f2b28fc5dad51 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:04:20 +0100 Subject: [PATCH 017/201] Add `flutter pub dev` step --- .github/workflows/main.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c9f97065..fdc1b5d6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -120,11 +120,13 @@ jobs: cache-version: 1 working-directory: auth0_flutter/example + - name: Install Flutter dependencies + working-directory: auth0_flutter/example + run: flutter pub get + - name: Install pods - env: - BUNDLE_PATH: ../vendor/bundle working-directory: auth0_flutter/example/ios - run: bundle exec gem query --local && gem query --local && pod install + run: pod install - name: Set .env working-directory: auth0_flutter/example/ios From e463184e52a41ef699425653dc64c3b48eb0edb1 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:10:02 +0100 Subject: [PATCH 018/201] Move Gemfile into `ios` dir --- auth0_flutter/example/{ => ios}/Gemfile | 0 auth0_flutter/example/{ => ios}/Gemfile.lock | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename auth0_flutter/example/{ => ios}/Gemfile (100%) rename auth0_flutter/example/{ => ios}/Gemfile.lock (100%) diff --git a/auth0_flutter/example/Gemfile b/auth0_flutter/example/ios/Gemfile similarity index 100% rename from auth0_flutter/example/Gemfile rename to auth0_flutter/example/ios/Gemfile diff --git a/auth0_flutter/example/Gemfile.lock b/auth0_flutter/example/ios/Gemfile.lock similarity index 100% rename from auth0_flutter/example/Gemfile.lock rename to auth0_flutter/example/ios/Gemfile.lock From 42e35b8cdd92dfbddda730dea6b96df0dc43419a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:12:40 +0100 Subject: [PATCH 019/201] Add xcpretty gem --- .github/workflows/main.yml | 20 ++++++++++---------- auth0_flutter/example/ios/Gemfile | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fdc1b5d6..78dab70c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -102,14 +102,12 @@ jobs: channel: stable cache: true - - name: Setup Xcode - uses: mxcl/xcodebuild@6e60022a0cbe8c89278be2dd1773a2f68e7c5c87 - with: - xcode: ${{ env.xcode }} - action: none + - name: Install Flutter dependencies + working-directory: auth0_flutter/example + run: flutter pub get - name: Set Ruby version - working-directory: auth0_flutter/example + working-directory: auth0_flutter/example/ios run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version shell: bash @@ -118,11 +116,13 @@ jobs: with: bundler-cache: true cache-version: 1 - working-directory: auth0_flutter/example + working-directory: auth0_flutter/example/ios - - name: Install Flutter dependencies - working-directory: auth0_flutter/example - run: flutter pub get + - name: Setup Xcode + uses: mxcl/xcodebuild@6e60022a0cbe8c89278be2dd1773a2f68e7c5c87 + with: + xcode: ${{ env.xcode }} + action: none - name: Install pods working-directory: auth0_flutter/example/ios diff --git a/auth0_flutter/example/ios/Gemfile b/auth0_flutter/example/ios/Gemfile index ac494816..7b26fa35 100644 --- a/auth0_flutter/example/ios/Gemfile +++ b/auth0_flutter/example/ios/Gemfile @@ -1,3 +1,4 @@ source 'https://rubygems.org' gem 'slather' +gem 'xcpretty' From 1e826d4d52ee2d16d7da8df7e55c00773da3c746 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:15:03 +0100 Subject: [PATCH 020/201] Update Gemfile.lock --- auth0_flutter/example/ios/Gemfile.lock | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/auth0_flutter/example/ios/Gemfile.lock b/auth0_flutter/example/ios/Gemfile.lock index 38866cea..6be66088 100644 --- a/auth0_flutter/example/ios/Gemfile.lock +++ b/auth0_flutter/example/ios/Gemfile.lock @@ -25,6 +25,7 @@ GEM racc (~> 1.4) racc (1.7.1) rexml (3.2.6) + rouge (2.0.7) slather (2.7.4) CFPropertyList (>= 2.2, < 4) activesupport @@ -40,6 +41,8 @@ GEM colored2 (~> 3.1) nanaimo (~> 0.3.0) rexml (~> 3.2.4) + xcpretty (0.3.0) + rouge (~> 2.0.7) PLATFORMS ruby @@ -48,6 +51,7 @@ PLATFORMS DEPENDENCIES slather + xcpretty BUNDLED WITH 2.1.4 From 7321437d998d5ef8770ee1c19d459c1ca87d6a4a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:27:42 +0100 Subject: [PATCH 021/201] Fix workspace filename --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 78dab70c..6bf524e6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -134,11 +134,11 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.workspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | xcpretty - name: Run iOS smoke tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.workspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | xcpretty - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 From 2844e613a031c67918cacc26254d715b1dc535ef Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:36:17 +0100 Subject: [PATCH 022/201] Use `format()` instead of `join()` --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6bf524e6..de05bbc8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -134,11 +134,11 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | xcpretty - name: Run iOS smoke tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ join('platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | xcpretty - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 From 4af1caef000f0bf9af616f950a6538a3fce85a8c Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:40:28 +0100 Subject: [PATCH 023/201] Run xcpretty with bundle exec --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index de05bbc8..c4987669 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -134,11 +134,11 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | bundle exec xcpretty - name: Run iOS smoke tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | bundle exec xcpretty - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 From 80869fb25ced377ac33dc6ac0661eba707e9c15d Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 18:54:10 +0100 Subject: [PATCH 024/201] Make sure the xcodebuild destination is quoted --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c4987669..72d061a9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -134,11 +134,11 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -skip-testing:RunnerUITests | bundle exec xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -skip-testing:RunnerUITests | bundle exec xcpretty - name: Run iOS smoke tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination ${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }} -only-testing:RunnerUITests | bundle exec xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -only-testing:RunnerUITests | bundle exec xcpretty - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 From 89bc63701696ed8d808b01151e65cca4982542cb Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 19:04:10 +0100 Subject: [PATCH 025/201] Do not run smoke tests on PRs from forks --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 72d061a9..a0e7e449 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -137,6 +137,7 @@ jobs: run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -skip-testing:RunnerUITests | bundle exec xcpretty - name: Run iOS smoke tests + if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} working-directory: auth0_flutter/example/ios run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -only-testing:RunnerUITests | bundle exec xcpretty From 89dcc3aa439fa48d94a4c3c209e921dcdcbd4140 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 20:22:39 +0100 Subject: [PATCH 026/201] Upload xcresult bundles --- .github/workflows/main.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a0e7e449..a8cd58b4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -134,12 +134,19 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -skip-testing:RunnerUITests | bundle exec xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests | bundle exec xcpretty - name: Run iOS smoke tests if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -only-testing:RunnerUITests | bundle exec xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests | bundle exec xcpretty + + - name: Upload xcresult bundles + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: xcresult bundles + path: '*.xcresult' - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 From 38ec507a7052adb99c62b3218703d3041c5cc661 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 20:53:03 +0100 Subject: [PATCH 027/201] Cache pods --- .github/workflows/main.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a8cd58b4..06a03252 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -124,10 +124,28 @@ jobs: xcode: ${{ env.xcode }} action: none + - name: Save Xcode version + run: xcodebuild -version | tee .xcode-version + + - id: restore-pods-cache + name: Restore Pods cache + uses: actions/cache/restore@f5ce41475b483ad7581884324a6eca9f48f8dcc7 + with: + path: auth0_flutter/example/ios/Pods + key: pods-${{ hashFiles('Podfile.lock') }}-${{ hashFiles('.xcode-version') }}-v1 + - name: Install pods working-directory: auth0_flutter/example/ios run: pod install + - name: Save Pods cache + id: save-pods-cache + uses: actions/cache/save@f5ce41475b483ad7581884324a6eca9f48f8dcc7 + if: steps.restore-pods-cache.outputs.cache-hit != 'true' + with: + path: auth0_flutter/example/ios/Pods + key: pods-${{ hashFiles('Podfile.lock') }}-${{ hashFiles('.xcode-version') }}-v1 + - name: Set .env working-directory: auth0_flutter/example/ios run: printf '%s\n%s\n%s' "AUTH0_DOMAIN=$AUTH0_DOMAIN" "AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID" 'AUTH0_CUSTOM_SCHEME=demo' >> ../.env From b284f38f610251e3b0a42f5596b401615c857019 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 21:06:14 +0100 Subject: [PATCH 028/201] Use the cache action --- .github/workflows/main.yml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 06a03252..568705ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -129,7 +129,7 @@ jobs: - id: restore-pods-cache name: Restore Pods cache - uses: actions/cache/restore@f5ce41475b483ad7581884324a6eca9f48f8dcc7 + uses: actions/cache@f5ce41475b483ad7581884324a6eca9f48f8dcc7 with: path: auth0_flutter/example/ios/Pods key: pods-${{ hashFiles('Podfile.lock') }}-${{ hashFiles('.xcode-version') }}-v1 @@ -138,14 +138,6 @@ jobs: working-directory: auth0_flutter/example/ios run: pod install - - name: Save Pods cache - id: save-pods-cache - uses: actions/cache/save@f5ce41475b483ad7581884324a6eca9f48f8dcc7 - if: steps.restore-pods-cache.outputs.cache-hit != 'true' - with: - path: auth0_flutter/example/ios/Pods - key: pods-${{ hashFiles('Podfile.lock') }}-${{ hashFiles('.xcode-version') }}-v1 - - name: Set .env working-directory: auth0_flutter/example/ios run: printf '%s\n%s\n%s' "AUTH0_DOMAIN=$AUTH0_DOMAIN" "AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID" 'AUTH0_CUSTOM_SCHEME=demo' >> ../.env From 5ab3ad8c57f0a77462f62c98b06505d2d25856d2 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 21:23:16 +0100 Subject: [PATCH 029/201] Use different fork check --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 568705ce..e5a7ea17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -147,7 +147,7 @@ jobs: run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests | bundle exec xcpretty - name: Run iOS smoke tests - if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} + if: ${{ github.event.pull_request.head.repo.fork == false }} working-directory: auth0_flutter/example/ios run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests | bundle exec xcpretty From 0fa8ac40471b0aa9a4b783e17f02953898e55d7a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 21:34:30 +0100 Subject: [PATCH 030/201] Remove xcpretty --- .github/workflows/main.yml | 4 ++-- auth0_flutter/example/ios/Gemfile | 1 - auth0_flutter/example/ios/Gemfile.lock | 4 ---- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e5a7ea17..73a87bd2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -144,12 +144,12 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests | bundle exec xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests - name: Run iOS smoke tests if: ${{ github.event.pull_request.head.repo.fork == false }} working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests | bundle exec xcpretty + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - name: Upload xcresult bundles uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce diff --git a/auth0_flutter/example/ios/Gemfile b/auth0_flutter/example/ios/Gemfile index 7b26fa35..ac494816 100644 --- a/auth0_flutter/example/ios/Gemfile +++ b/auth0_flutter/example/ios/Gemfile @@ -1,4 +1,3 @@ source 'https://rubygems.org' gem 'slather' -gem 'xcpretty' diff --git a/auth0_flutter/example/ios/Gemfile.lock b/auth0_flutter/example/ios/Gemfile.lock index 6be66088..38866cea 100644 --- a/auth0_flutter/example/ios/Gemfile.lock +++ b/auth0_flutter/example/ios/Gemfile.lock @@ -25,7 +25,6 @@ GEM racc (~> 1.4) racc (1.7.1) rexml (3.2.6) - rouge (2.0.7) slather (2.7.4) CFPropertyList (>= 2.2, < 4) activesupport @@ -41,8 +40,6 @@ GEM colored2 (~> 3.1) nanaimo (~> 0.3.0) rexml (~> 3.2.4) - xcpretty (0.3.0) - rouge (~> 2.0.7) PLATFORMS ruby @@ -51,7 +48,6 @@ PLATFORMS DEPENDENCIES slather - xcpretty BUNDLED WITH 2.1.4 From dce1bb4e6aa5c3fbbefc6ae8624d7b13c673e897 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 21:36:18 +0100 Subject: [PATCH 031/201] Add Xcode matrix --- .github/workflows/main.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 73a87bd2..0707a4d4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -84,13 +84,18 @@ jobs: if: ${{ failure() }} test-ios: - name: Test iOS native code + name: Test native iOS code using Xcode ${{ matrix.xcode }} runs-on: macos-latest env: xcode: '14.2' simulator: iPhone 14 + strategy: + matrix: + xcode: + - '14.2' + steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 From 74be1b11d9e8b238718247878775f1d35ec270a4 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 21:42:31 +0100 Subject: [PATCH 032/201] Use xcode-select directly --- .github/workflows/main.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0707a4d4..27ef4051 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -124,10 +124,7 @@ jobs: working-directory: auth0_flutter/example/ios - name: Setup Xcode - uses: mxcl/xcodebuild@6e60022a0cbe8c89278be2dd1773a2f68e7c5c87 - with: - xcode: ${{ env.xcode }} - action: none + run: sudo xcode-select --switch /Applications/Xcode_${{ env.xcode }}.app/Contents/Developer - name: Save Xcode version run: xcodebuild -version | tee .xcode-version From 3dbf4141eccd82c58995bec635d71092c1d76c5e Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 21 Aug 2023 21:45:48 +0100 Subject: [PATCH 033/201] Fix path of xcresult bundles --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 27ef4051..35925f33 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -158,7 +158,7 @@ jobs: if: ${{ failure() }} with: name: xcresult bundles - path: '*.xcresult' + path: 'auth0_flutter/example/ios/*.xcresult' - name: Cancel wokflow on failure uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 From a78409d5e667e1ef8f23f4af60741693fe5632b4 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 22 Aug 2023 13:16:24 +0100 Subject: [PATCH 034/201] Add `authorize` job --- .github/workflows/main.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 35925f33..e082bc46 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,8 +5,16 @@ env: flutter-version: '3.x' jobs: + authorize: + name: Authorize + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + runs-on: ubuntu-latest + steps: + - run: true + analyze: name: Analyze Flutter packages + needs: authorize runs-on: ubuntu-latest steps: @@ -38,6 +46,7 @@ jobs: test-flutter: name: Test Flutter packages + needs: authorize runs-on: ubuntu-latest steps: @@ -85,6 +94,7 @@ jobs: test-ios: name: Test native iOS code using Xcode ${{ matrix.xcode }} + needs: authorize runs-on: macos-latest env: From e5d21bc72eb77dd45dc0fe13fa97c4f6c7439c1f Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 22 Aug 2023 15:25:21 +0100 Subject: [PATCH 035/201] Use secrets and vars contexts --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e082bc46..c13c45d9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -100,6 +100,8 @@ jobs: env: xcode: '14.2' simulator: iPhone 14 + USER_EMAIL: ${{ secrets.USER_EMAIL }} + USER_PASSWORD: ${{ secrets.USER_PASSWORD }} strategy: matrix: @@ -152,7 +154,7 @@ jobs: - name: Set .env working-directory: auth0_flutter/example/ios - run: printf '%s\n%s\n%s' "AUTH0_DOMAIN=$AUTH0_DOMAIN" "AUTH0_CLIENT_ID=$AUTH0_CLIENT_ID" 'AUTH0_CUSTOM_SCHEME=demo' >> ../.env + run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ vars.AUTH0_DOMAIN }}' 'AUTH0_CLIENT_ID=${{ vars.AUTH0_CLIENT_ID }}' 'AUTH0_CUSTOM_SCHEME=demo' >> ../.env - name: Run iOS unit tests working-directory: auth0_flutter/example/ios From ba2122c2607f8306b19e4f60e4b8b3b3b6fdba47 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 22 Aug 2023 16:01:26 +0100 Subject: [PATCH 036/201] Set environment of ios-test job --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c13c45d9..c48aae17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -96,6 +96,7 @@ jobs: name: Test native iOS code using Xcode ${{ matrix.xcode }} needs: authorize runs-on: macos-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} env: xcode: '14.2' From 83e7bd309da8334df0c5e3d1ecd0c26cd148e857 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 22 Aug 2023 20:37:49 +0100 Subject: [PATCH 037/201] Change working dir of "Set .env" step --- .github/workflows/main.yml | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c48aae17..1d237b3d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,10 +40,6 @@ jobs: working-directory: auth0_flutter_platform_interface run: flutter analyze - - name: Cancel wokflow on failure - uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 - if: ${{ failure() }} - test-flutter: name: Test Flutter packages needs: authorize @@ -88,10 +84,6 @@ jobs: flags: auth0_flutter_platform_interface files: ./auth0_flutter_platform_interface/coverage/lcov.info - - name: Cancel wokflow on failure - uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 - if: ${{ failure() }} - test-ios: name: Test native iOS code using Xcode ${{ matrix.xcode }} needs: authorize @@ -154,8 +146,8 @@ jobs: run: pod install - name: Set .env - working-directory: auth0_flutter/example/ios - run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ vars.AUTH0_DOMAIN }}' 'AUTH0_CLIENT_ID=${{ vars.AUTH0_CLIENT_ID }}' 'AUTH0_CUSTOM_SCHEME=demo' >> ../.env + working-directory: auth0_flutter/example + run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ vars.AUTH0_DOMAIN }}' 'AUTH0_CLIENT_ID=${{ vars.AUTH0_CLIENT_ID }}' 'AUTH0_CUSTOM_SCHEME=demo' >> .env - name: Run iOS unit tests working-directory: auth0_flutter/example/ios @@ -172,7 +164,3 @@ jobs: with: name: xcresult bundles path: 'auth0_flutter/example/ios/*.xcresult' - - - name: Cancel wokflow on failure - uses: andymckay/cancel-action@b9280e3f8986d7a8e91c7462efc0fa318010c8b1 - if: ${{ failure() }} From 149172d7ce66807d5bf4f74f9c59b9ccb8bf7242 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 13:48:49 +0100 Subject: [PATCH 038/201] Make iOS smoke tests less flaky --- .../example/ios/Runner/AppDelegate.swift | 2 +- .../example/ios/UITests/SmokeTests.swift | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/auth0_flutter/example/ios/Runner/AppDelegate.swift b/auth0_flutter/example/ios/Runner/AppDelegate.swift index 98e4d311..bc5a0ec1 100644 --- a/auth0_flutter/example/ios/Runner/AppDelegate.swift +++ b/auth0_flutter/example/ios/Runner/AppDelegate.swift @@ -9,7 +9,7 @@ import Auth0 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) - if ProcessInfo.processInfo.arguments.contains("SmokeTests") { + if CommandLine.arguments.contains("--smoke-tests") { self.window?.layer.speed = 0.0 UIView.setAnimationsEnabled(false) } diff --git a/auth0_flutter/example/ios/UITests/SmokeTests.swift b/auth0_flutter/example/ios/UITests/SmokeTests.swift index 9c5ab976..246e6af8 100644 --- a/auth0_flutter/example/ios/UITests/SmokeTests.swift +++ b/auth0_flutter/example/ios/UITests/SmokeTests.swift @@ -11,7 +11,7 @@ class SmokeTests: XCTestCase { override func setUp() { continueAfterFailure = false let app = XCUIApplication() - app.launchArguments = ["SmokeTests"] + app.launchArguments.append("--smoke-tests") app.launchEnvironment = ProcessInfo.processInfo.environment app.launch() } @@ -52,7 +52,18 @@ private extension SmokeTests { func tap(button label: String) { let button = XCUIApplication().buttons[label] XCTAssertTrue(button.waitForExistence(timeout: timeout)) - button.tap() + button.forceTap() tapAlert() } } + +extension XCUIElement { + func forceTap() { + if self.isHittable { + self.tap() + } else { + let coordinate = self.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.5)) + coordinate.tap() + } + } +} From e290fb598aa7afb2c20197fa35744bc5af91878b Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 13:50:12 +0100 Subject: [PATCH 039/201] Disable hardware keyboard on simulator --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d237b3d..907ba629 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -156,7 +156,9 @@ jobs: - name: Run iOS smoke tests if: ${{ github.event.pull_request.head.repo.fork == false }} working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + run: | + defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 + xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - name: Upload xcresult bundles uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce From 6c67e322e22db60f4aaa45ffc263e6805b31a7a0 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 14:15:52 +0100 Subject: [PATCH 040/201] Add Codecov steps to iOS job --- .github/workflows/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 907ba629..825ceef3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -160,6 +160,15 @@ jobs: defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + - name: Convert coverage report + working-directory: auth0_flutter/example/ios + run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj + + - name: Upload coverage report + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + working-directory: auth0_flutter/example/ios + - name: Upload xcresult bundles uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce if: ${{ failure() }} From 232679366230d1fbc42c591ce7875bf1f51c1a86 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 14:36:21 +0100 Subject: [PATCH 041/201] Specify coverage directory --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 825ceef3..e8209cdc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -167,7 +167,7 @@ jobs: - name: Upload coverage report uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d with: - working-directory: auth0_flutter/example/ios + directory: auth0_flutter/example/ios/cobertura - name: Upload xcresult bundles uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce From e051d0bfd4c4c7ac0c416dcdcba18ac8dbe3fa8a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 14:49:33 +0100 Subject: [PATCH 042/201] Extract iOS setup into a local action --- .github/actions/setup-ios/action.yml | 72 ++++++++++++++++++++++++++++ .github/workflows/main.yml | 54 ++++----------------- 2 files changed, 81 insertions(+), 45 deletions(-) create mode 100644 .github/actions/setup-ios/action.yml diff --git a/.github/actions/setup-ios/action.yml b/.github/actions/setup-ios/action.yml new file mode 100644 index 00000000..c3ea6b18 --- /dev/null +++ b/.github/actions/setup-ios/action.yml @@ -0,0 +1,72 @@ +name: Set up environment +description: Set up the environment for building and testing the library on a given platform + +inputs: + flutter: + description: The version of Flutter to use + required: true + + xcode: + description: The version of Xcode to use + required: true + + auth0-domain: + description: The Auth0 domain + required: true + + auth0-client-id: + description: The Auth0 client ID + required: true + +runs: + using: composite + + steps: + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ inputs.flutter }} + channel: stable + cache: true + + - name: Install Flutter dependencies + working-directory: auth0_flutter/example + run: flutter pub get + shell: bash + + - name: Set Ruby version + working-directory: auth0_flutter/example/ios + run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version + shell: bash + + - name: Set up Ruby + uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 + with: + bundler-cache: true + cache-version: 1 + working-directory: auth0_flutter/example/ios + + - name: Setup Xcode + run: sudo xcode-select --switch /Applications/Xcode_${{ inputs.xcode }}.app/Contents/Developer + shell: bash + + - name: Save Xcode version + run: xcodebuild -version | tee .xcode-version + shell: bash + + - id: restore-pods-cache + name: Restore Pods cache + uses: actions/cache@f5ce41475b483ad7581884324a6eca9f48f8dcc7 + with: + path: auth0_flutter/example/ios/Pods + key: pods-${{ hashFiles('Podfile.lock') }}-${{ hashFiles('.xcode-version') }}-v1 + + - name: Install pods + working-directory: auth0_flutter/example/ios + run: pod install + shell: bash + + - name: Set .env + working-directory: auth0_flutter/example + run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ inputs.auth0-domain }}' 'AUTH0_CLIENT_ID=${{ inputs.auth0-client-id }}' 'AUTH0_CUSTOM_SCHEME=demo' >> .env + shell: bash diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e8209cdc..6beb5c13 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,7 +2,7 @@ name: CI on: push env: - flutter-version: '3.x' + flutter: '3.x' jobs: authorize: @@ -24,7 +24,7 @@ jobs: - name: Install Flutter uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa with: - flutter-version: ${{ env.flutter-version }} + flutter-version: ${{ env.flutter }} channel: stable cache: true @@ -52,7 +52,7 @@ jobs: - name: Install Flutter uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa with: - flutter-version: ${{ env.flutter-version }} + flutter-version: ${{ env.flutter }} channel: stable cache: true @@ -105,49 +105,13 @@ jobs: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter-version }} - channel: stable - cache: true - - - name: Install Flutter dependencies - working-directory: auth0_flutter/example - run: flutter pub get - - - name: Set Ruby version - working-directory: auth0_flutter/example/ios - run: ruby -e 'puts RUBY_VERSION' | tee .ruby-version - shell: bash - - - name: Set up Ruby - uses: ruby/setup-ruby@250fcd6a742febb1123a77a841497ccaa8b9e939 - with: - bundler-cache: true - cache-version: 1 - working-directory: auth0_flutter/example/ios - - - name: Setup Xcode - run: sudo xcode-select --switch /Applications/Xcode_${{ env.xcode }}.app/Contents/Developer - - - name: Save Xcode version - run: xcodebuild -version | tee .xcode-version - - - id: restore-pods-cache - name: Restore Pods cache - uses: actions/cache@f5ce41475b483ad7581884324a6eca9f48f8dcc7 + - name: Set up environment + uses: ./.github/actions/setup-ios with: - path: auth0_flutter/example/ios/Pods - key: pods-${{ hashFiles('Podfile.lock') }}-${{ hashFiles('.xcode-version') }}-v1 - - - name: Install pods - working-directory: auth0_flutter/example/ios - run: pod install - - - name: Set .env - working-directory: auth0_flutter/example - run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ vars.AUTH0_DOMAIN }}' 'AUTH0_CLIENT_ID=${{ vars.AUTH0_CLIENT_ID }}' 'AUTH0_CUSTOM_SCHEME=demo' >> .env + flutter: ${{ env.flutter }} + xcode: ${{ matrix.xcode }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - name: Run iOS unit tests working-directory: auth0_flutter/example/ios From d5b326cb6551a71948812c92525a33b3887a2e31 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 15:01:15 +0100 Subject: [PATCH 043/201] Split iOS testing jobs --- .github/workflows/main.yml | 56 ++++++++++++++++++++++++++++++-------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6beb5c13..2a3d444f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,6 +3,8 @@ on: push env: flutter: '3.x' + xcode: '14.2' + simulator: iPhone 14 jobs: authorize: @@ -84,15 +86,13 @@ jobs: flags: auth0_flutter_platform_interface files: ./auth0_flutter_platform_interface/coverage/lcov.info - test-ios: - name: Test native iOS code using Xcode ${{ matrix.xcode }} + test-ios-unit: + name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} needs: authorize runs-on: macos-latest environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} env: - xcode: '14.2' - simulator: iPhone 14 USER_EMAIL: ${{ secrets.USER_EMAIL }} USER_PASSWORD: ${{ secrets.USER_PASSWORD }} @@ -117,13 +117,6 @@ jobs: working-directory: auth0_flutter/example/ios run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests - - name: Run iOS smoke tests - if: ${{ github.event.pull_request.head.repo.fork == false }} - working-directory: auth0_flutter/example/ios - run: | - defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 - xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - - name: Convert coverage report working-directory: auth0_flutter/example/ios run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj @@ -139,3 +132,44 @@ jobs: with: name: xcresult bundles path: 'auth0_flutter/example/ios/*.xcresult' + + test-ios-smoke: + name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} + needs: authorize + runs-on: macos-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + env: + USER_EMAIL: ${{ secrets.USER_EMAIL }} + USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + + strategy: + matrix: + xcode: + - '14.2' + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Set up environment + uses: ./.github/actions/setup-ios + with: + flutter: ${{ env.flutter }} + xcode: ${{ matrix.xcode }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Run iOS smoke tests + if: ${{ github.event.pull_request.head.repo.fork == false }} + working-directory: auth0_flutter/example/ios + run: | + defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 + xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + + - name: Upload xcresult bundles + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: xcresult bundles + path: 'auth0_flutter/example/ios/*.xcresult' From 9ac6c0f60af787bcfc542c9c1aab12143328ce82 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 15:14:30 +0100 Subject: [PATCH 044/201] Split Flutter jobs for each package --- .github/workflows/main.yml | 48 +++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2a3d444f..6d40d540 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,8 +14,8 @@ jobs: steps: - run: true - analyze: - name: Analyze Flutter packages + analyze-auth0_flutter: + name: Analyze auth0_flutter Flutter package needs: authorize runs-on: ubuntu-latest @@ -37,13 +37,29 @@ jobs: - name: Analize auth0_flutter package working-directory: auth0_flutter run: flutter analyze + + analyze-auth0_flutter_platform_interface: + name: Analyze auth0_flutter_platform_interface Flutter package + needs: authorize + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true - name: Analize auth0_flutter_platform_interface package working-directory: auth0_flutter_platform_interface run: flutter analyze - test-flutter: - name: Test Flutter packages + test-auth0_flutter: + name: Test auth0_flutter Flutter package needs: authorize runs-on: ubuntu-latest @@ -68,10 +84,6 @@ jobs: flutter test --tags browser --platform chrome flutter test --coverage --exclude-tags browser - - name: Test auth0_flutter_platform_interface package - working-directory: auth0_flutter_platform_interface - run: flutter test --coverage - - name: Upload coverage report for auth0_flutter uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d with: @@ -79,6 +91,26 @@ jobs: flags: auth0_flutter files: ./auth0_flutter/coverage/lcov.info + test-auth0_flutter_platform_interface: + name: Test auth0_flutter Flutter package + needs: authorize + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true + + - name: Test auth0_flutter_platform_interface package + working-directory: auth0_flutter_platform_interface + run: flutter test --coverage + - name: Upload coverage report for auth0_flutter_platform_interface uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d with: From 4b5eaeff15acd5c56c6248b48c22b9de27f1e4be Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 15:21:56 +0100 Subject: [PATCH 045/201] Fix job name --- .github/workflows/main.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6d40d540..8d1e9d21 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,10 +30,6 @@ jobs: channel: stable cache: true - - name: Add example/.env - working-directory: auth0_flutter - run: cp example/.env.example example/.env - - name: Analize auth0_flutter package working-directory: auth0_flutter run: flutter analyze @@ -92,7 +88,7 @@ jobs: files: ./auth0_flutter/coverage/lcov.info test-auth0_flutter_platform_interface: - name: Test auth0_flutter Flutter package + name: Test auth0_flutter_platform_interface Flutter package needs: authorize runs-on: ubuntu-latest From 4c91ed6fe952d16ab307d4265f71d59f334e48c8 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 25 Aug 2023 15:24:29 +0100 Subject: [PATCH 046/201] Add .env step to analyze job --- .github/workflows/main.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8d1e9d21..f5be04ea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,6 +30,10 @@ jobs: channel: stable cache: true + - name: Add example/.env + working-directory: auth0_flutter + run: cp example/.env.example example/.env + - name: Analize auth0_flutter package working-directory: auth0_flutter run: flutter analyze From b007b823d939ab9f5c6a41dabb008872c5b75b36 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 18:57:31 +0100 Subject: [PATCH 047/201] Add basic android unit tests job --- .github/workflows/main.yml | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f5be04ea..660a432d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -205,3 +205,56 @@ jobs: with: name: xcresult bundles path: 'auth0_flutter/example/ios/*.xcresult' + + test-android-unit: + name: Run native Android unit tests + needs: authorize + runs-on: ubuntu-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + env: + java: 11 + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true + + - name: Install Flutter dependencies + working-directory: auth0_flutter/example + run: flutter pub get + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: ${{ env.java }} + cache: 'gradle' + + - name: Set .env + working-directory: auth0_flutter/example + run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ vars.AUTH0_DOMAIN }}' 'AUTH0_CLIENT_ID=${{ vars.AUTH0_CLIENT_ID }}' 'AUTH0_CUSTOM_SCHEME=demo' >> .env + + - name: Set strings.xml + working-directory: auth0_flutter/example + run: | + mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml + sed -i 's/YOUR_AUTH0_DOMAIN/${{ vars.AUTH0_DOMAIN }}/' android/app/src/main/res/values/strings.xml + + - name: Set local.properties + working-directory: auth0_flutter/example + run: mv android/local.properties.ci android/local.properties + + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk + + - name: Run Android unit tests + working-directory: auth0_flutter/example/android + run: gradle clean jacocoTestReportDebug From af86dc4982e3c045d6845cd65f58ac37614119cb Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 19:10:45 +0100 Subject: [PATCH 048/201] Remove local.properties step --- .github/workflows/main.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 660a432d..a3f60813 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -247,10 +247,6 @@ jobs: mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml sed -i 's/YOUR_AUTH0_DOMAIN/${{ vars.AUTH0_DOMAIN }}/' android/app/src/main/res/values/strings.xml - - name: Set local.properties - working-directory: auth0_flutter/example - run: mv android/local.properties.ci android/local.properties - - name: Build Android example app working-directory: auth0_flutter/example run: flutter build apk From 9185cdfb72c54a0e4069eac546574d11594928a2 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 19:41:31 +0100 Subject: [PATCH 049/201] Change Gradle task --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a3f60813..b00b8d6d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,4 +253,4 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: gradle clean jacocoTestReportDebug + run: gradle clean auth0_flutter:testDebugUnitTest From 9aaff2c3c2efc326d34c3772b21656d2ec96e9cf Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 19:57:19 +0100 Subject: [PATCH 050/201] Update Gradle --- auth0_flutter/android/build.gradle | 4 ++-- auth0_flutter/example/android/build.gradle | 2 +- .../example/android/gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/auth0_flutter/android/build.gradle b/auth0_flutter/android/build.gradle index ea02e801..0c442c27 100644 --- a/auth0_flutter/android/build.gradle +++ b/auth0_flutter/android/build.gradle @@ -11,7 +11,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:4.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -75,6 +75,6 @@ dependencies { testImplementation "org.mockito.kotlin:mockito-kotlin:4.0.0" testImplementation 'com.jayway.awaitility:awaitility:1.7.0' testImplementation 'org.robolectric:robolectric:4.6.1' - testImplementation 'androidx.test.espresso:espresso-intents:3.4.0' + testImplementation 'androidx.test.espresso:espresso-intents:3.5.1' testImplementation 'com.auth0:java-jwt:3.19.1' } diff --git a/auth0_flutter/example/android/build.gradle b/auth0_flutter/example/android/build.gradle index 95cf12f0..04d6bef1 100644 --- a/auth0_flutter/example/android/build.gradle +++ b/auth0_flutter/example/android/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:4.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0" } diff --git a/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties b/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties index cfe88f69..e6b38c2d 100644 --- a/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip From ef9f5d88edbc730f5984cedb24ca7f8424d94d98 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:05:09 +0100 Subject: [PATCH 051/201] Remove com.vanniktech:gradle-android-junit-jacoco-plugin --- .github/workflows/main.yml | 2 +- auth0_flutter/android/build.gradle | 4 +-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../example/android/app/build.gradle | 34 ++++++++++++++++--- auth0_flutter/example/android/build.gradle | 12 ++----- .../example/android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- 7 files changed, 39 insertions(+), 19 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b00b8d6d..ea0360e9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,4 +253,4 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: gradle clean auth0_flutter:testDebugUnitTest + run: gradle jacocoTestReport diff --git a/auth0_flutter/android/build.gradle b/auth0_flutter/android/build.gradle index 0c442c27..f0b273e0 100644 --- a/auth0_flutter/android/build.gradle +++ b/auth0_flutter/android/build.gradle @@ -4,14 +4,14 @@ group libApplicationId version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/auth0_flutter/android/gradle/wrapper/gradle-wrapper.properties b/auth0_flutter/android/gradle/wrapper/gradle-wrapper.properties index da9702f9..774fae87 100644 --- a/auth0_flutter/android/gradle/wrapper/gradle-wrapper.properties +++ b/auth0_flutter/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index bcffda3a..1394e696 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -24,12 +24,9 @@ if (flutterVersionName == null) { apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'jacoco' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" -jacoco { - toolVersion = '0.8.8' -} - android { compileSdk 31 if (project.android.hasProperty("namespace")) { @@ -61,12 +58,23 @@ android { auth0Scheme: "$System.env.AUTH0_CUSTOM_SCHEME"] testOptions { + unitTests.all { + jacoco { + includeNoLocationClasses = true + } + } + + unitTests.returnDefaultValues = true animationsDisabled = true buildConfigField "String", "USER_EMAIL", "\"$System.env.USER_EMAIL\"" buildConfigField "String", "USER_PASSWORD", "\"$System.env.USER_PASSWORD\"" } } + buildFeatures { + buildConfig true + } + buildTypes { debug { testCoverageEnabled true @@ -95,3 +103,21 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } + +task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { + reports { + xml.required = true + html.required = true + } + + def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] + def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter) + def mainSrc = "${project.projectDir}/src/main/kotlin" + + sourceDirectories.setFrom(files([mainSrc])) + classDirectories.setFrom(files([debugTree])) + executionData.setFrom(fileTree(dir: "$buildDir", includes: [ + "jacoco/testDebugUnitTest.exec", + "outputs/code-coverage/connected/*coverage.ec" + ])) +} diff --git a/auth0_flutter/example/android/build.gradle b/auth0_flutter/example/android/build.gradle index 04d6bef1..1f7f80b9 100644 --- a/auth0_flutter/example/android/build.gradle +++ b/auth0_flutter/example/android/build.gradle @@ -1,23 +1,17 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0" + classpath 'org.jacoco:org.jacoco.core:0.8.10' } } -apply plugin: "com.vanniktech.android.junit.jacoco" - -junitJacoco { - jacocoVersion = '0.8.8' // type String -} - allprojects { repositories { google() diff --git a/auth0_flutter/example/android/gradle.properties b/auth0_flutter/example/android/gradle.properties index a777f0ef..3fb346e6 100644 --- a/auth0_flutter/example/android/gradle.properties +++ b/auth0_flutter/example/android/gradle.properties @@ -1,4 +1,4 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -android.jetifier.blacklist=bcprov-jdk15on +android.jetifier.ignorelist=bcprov-jdk15on diff --git a/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties b/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties index e6b38c2d..78a9a917 100644 --- a/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/auth0_flutter/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip From b774241d2367b4adcb9a6e0ef69f2218b049fae6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:12:57 +0100 Subject: [PATCH 052/201] Use Gradle wrapper --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ea0360e9..ef8ca700 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,4 +253,4 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: gradle jacocoTestReport + run: ./gradlew jacocoTestReport From 423a4b463c4e6975cb29ea2cc1f72f52e1cb6251 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:35:39 +0100 Subject: [PATCH 053/201] Run AGP Upgrade Assistant tool --- auth0_flutter/example/android/app/build.gradle | 1 + .../example/android/app/src/debug/AndroidManifest.xml | 3 +-- auth0_flutter/example/android/app/src/main/AndroidManifest.xml | 3 +-- .../example/android/app/src/profile/AndroidManifest.xml | 3 +-- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index 1394e696..f7e50c22 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -28,6 +28,7 @@ apply plugin: 'jacoco' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { + namespace 'com.auth0.auth0_flutter_example' compileSdk 31 if (project.android.hasProperty("namespace")) { namespace exampleAppApplicationId diff --git a/auth0_flutter/example/android/app/src/debug/AndroidManifest.xml b/auth0_flutter/example/android/app/src/debug/AndroidManifest.xml index ab2bb962..f880684a 100644 --- a/auth0_flutter/example/android/app/src/debug/AndroidManifest.xml +++ b/auth0_flutter/example/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/auth0_flutter/example/android/app/src/main/AndroidManifest.xml b/auth0_flutter/example/android/app/src/main/AndroidManifest.xml index cce6c4b8..ed99104a 100644 --- a/auth0_flutter/example/android/app/src/main/AndroidManifest.xml +++ b/auth0_flutter/example/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ + xmlns:tools="http://schemas.android.com/tools"> + From 886180c26d00aeca386615a95ad2b687e8fd6338 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:37:02 +0100 Subject: [PATCH 054/201] Show contents of coverage report dir --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ef8ca700..22705f30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,4 +253,4 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: ./gradlew jacocoTestReport + run: ./gradlew jacocoTestReport && ls ../build/app/reports/coverage/androidTest/debug/connected From f9d1dd8926a0f52071a3527a4acb4cc03257e3c3 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:48:26 +0100 Subject: [PATCH 055/201] Add Codecov step to Android unit test job --- .github/workflows/main.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 22705f30..7b90624f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,4 +253,9 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: ./gradlew jacocoTestReport && ls ../build/app/reports/coverage/androidTest/debug/connected + run: ./gradlew jacocoTestReport + + - name: Upload coverage report + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected From 15de2965a63ea823bf364a29842259608e021401 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:59:09 +0100 Subject: [PATCH 056/201] Remove leftover file --- .../app/src/main/kotlin/com/auth0/example/MainActivity.kt | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 auth0_flutter/example/android/app/src/main/kotlin/com/auth0/example/MainActivity.kt diff --git a/auth0_flutter/example/android/app/src/main/kotlin/com/auth0/example/MainActivity.kt b/auth0_flutter/example/android/app/src/main/kotlin/com/auth0/example/MainActivity.kt deleted file mode 100644 index c3e7f8ca..00000000 --- a/auth0_flutter/example/android/app/src/main/kotlin/com/auth0/example/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.auth0.example - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} From dc2d0bf06ae223b2a11d73eada6969bdadb735d6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 21:59:49 +0100 Subject: [PATCH 057/201] Generate only xml Jacoco report --- auth0_flutter/example/android/app/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index f7e50c22..a184b930 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -108,7 +108,6 @@ dependencies { task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { reports { xml.required = true - html.required = true } def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] From 2403aea155581e0ed620095101b0fe9835e9fb20 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:00:06 +0100 Subject: [PATCH 058/201] Show contents of reports dir --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7b90624f..05a72e8c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,7 +253,7 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: ./gradlew jacocoTestReport + run: ./gradlew jacocoTestReport && ls auth0_flutter/example/build/app/reports/ - name: Upload coverage report uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d From 626e692f68c69e645b006f9b35ef577260b4637b Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:07:17 +0100 Subject: [PATCH 059/201] Fix reports dir --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 05a72e8c..6b150418 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,7 +253,7 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: ./gradlew jacocoTestReport && ls auth0_flutter/example/build/app/reports/ + run: ./gradlew jacocoTestReport && ls ../build/app/reports/ - name: Upload coverage report uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d From 96e3ea0e1f1003233c2d85c93cc192597fb0a6da Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:18:44 +0100 Subject: [PATCH 060/201] Upload test results on failure --- .github/workflows/main.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6b150418..8f92266f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,9 +253,16 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: ./gradlew jacocoTestReport && ls ../build/app/reports/ + run: ./gradlew jacocoTestReport - name: Upload coverage report uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d with: directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected + + - name: Upload test results + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: Test results + path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' From 01139489c59eb8d39e74bd29ca97871c09ec7a52 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:19:25 +0100 Subject: [PATCH 061/201] Replace jacoco task --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8f92266f..9f5bb295 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -253,7 +253,7 @@ jobs: - name: Run Android unit tests working-directory: auth0_flutter/example/android - run: ./gradlew jacocoTestReport + run: ./gradlew testDebugUnitTest createDebugCoverageReport - name: Upload coverage report uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d From cba6456be0d56788b85c8dc9fafd0558fab02ec6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:28:43 +0100 Subject: [PATCH 062/201] Remove jacoco task --- auth0_flutter/example/android/app/build.gradle | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index a184b930..227c00eb 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -104,20 +104,3 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } - -task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) { - reports { - xml.required = true - } - - def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*'] - def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter) - def mainSrc = "${project.projectDir}/src/main/kotlin" - - sourceDirectories.setFrom(files([mainSrc])) - classDirectories.setFrom(files([debugTree])) - executionData.setFrom(fileTree(dir: "$buildDir", includes: [ - "jacoco/testDebugUnitTest.exec", - "outputs/code-coverage/connected/*coverage.ec" - ])) -} From e441d585b342c3198941f132245483a2b40e2d61 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:40:03 +0100 Subject: [PATCH 063/201] Extract Android setup into a local action --- .github/actions/seteup-android/action.yml | 64 +++++++++++++++++++++++ .github/workflows/main.yml | 40 +++----------- 2 files changed, 71 insertions(+), 33 deletions(-) create mode 100644 .github/actions/seteup-android/action.yml diff --git a/.github/actions/seteup-android/action.yml b/.github/actions/seteup-android/action.yml new file mode 100644 index 00000000..e8c3e590 --- /dev/null +++ b/.github/actions/seteup-android/action.yml @@ -0,0 +1,64 @@ +name: Set up environment +description: Set up the environment for building and testing the library on a given platform + +inputs: + flutter: + description: The version of Flutter to use + required: true + + xcode: + description: The version of Java to use + required: true + + auth0-domain: + description: The Auth0 domain + required: true + + auth0-client-id: + description: The Auth0 client ID + required: true + +runs: + using: composite + + steps: + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ inputs.flutter }} + channel: stable + cache: true + + - name: Install Flutter dependencies + working-directory: auth0_flutter/example + run: flutter pub get + shell: bash + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: ${{ inputs.java }} + cache: 'gradle' + + - name: Set .env + working-directory: auth0_flutter/example + run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ inputs.auth0-domain }}' 'AUTH0_CLIENT_ID=${{ inputs.auth0-client-id }}' 'AUTH0_CUSTOM_SCHEME=demo' >> .env + shell: bash + + - name: Set strings.xml + working-directory: auth0_flutter/example + run: | + mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml + sed -i 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' android/app/src/main/res/values/strings.xml + shell: bash + + - name: Set Gradle wrapper + working-directory: auth0_flutter/example/android + run: gradle wrapper + shell: bash + + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk --split-per-abi + shell: bash diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9f5bb295..4be8330a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,6 +5,7 @@ env: flutter: '3.x' xcode: '14.2' simulator: iPhone 14 + java: 11 jobs: authorize: @@ -212,44 +213,17 @@ jobs: runs-on: ubuntu-latest environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - env: - java: 11 - steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Install Flutter dependencies - working-directory: auth0_flutter/example - run: flutter pub get - - - name: Setup Java - uses: actions/setup-java@v3 + - name: Set up environment + uses: ./.github/actions/setup-android with: - distribution: 'temurin' - java-version: ${{ env.java }} - cache: 'gradle' - - - name: Set .env - working-directory: auth0_flutter/example - run: printf '%s\n%s\n%s' 'AUTH0_DOMAIN=${{ vars.AUTH0_DOMAIN }}' 'AUTH0_CLIENT_ID=${{ vars.AUTH0_CLIENT_ID }}' 'AUTH0_CUSTOM_SCHEME=demo' >> .env - - - name: Set strings.xml - working-directory: auth0_flutter/example - run: | - mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml - sed -i 's/YOUR_AUTH0_DOMAIN/${{ vars.AUTH0_DOMAIN }}/' android/app/src/main/res/values/strings.xml - - - name: Build Android example app - working-directory: auth0_flutter/example - run: flutter build apk + flutter: ${{ env.flutter }} + java: ${{ env.java }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - name: Run Android unit tests working-directory: auth0_flutter/example/android From 7f93eef0c90a9c1d28b4e4b8960020111ff9261f Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 22:59:27 +0100 Subject: [PATCH 064/201] Add basic android smoke tests job --- .github/workflows/main.yml | 56 +++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4be8330a..eb4bd43b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -4,8 +4,9 @@ on: push env: flutter: '3.x' xcode: '14.2' - simulator: iPhone 14 + ios-simulator: iPhone 14 java: 11 + android-api: 29 jobs: authorize: @@ -148,7 +149,7 @@ jobs: - name: Run iOS unit tests working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests - name: Convert coverage report working-directory: auth0_flutter/example/ios @@ -198,13 +199,13 @@ jobs: working-directory: auth0_flutter/example/ios run: | defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 - xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - name: Upload xcresult bundles uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce if: ${{ failure() }} with: - name: xcresult bundles + name: 'iOS: xcresult bundles' path: 'auth0_flutter/example/ios/*.xcresult' test-android-unit: @@ -240,3 +241,50 @@ jobs: with: name: Test results path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' + + test-android-smoke: + name: Run native Android smoke tests + needs: authorize + runs-on: macos-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + env: + USER_EMAIL: ${{ secrets.USER_EMAIL }} + USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Set up environment + uses: ./.github/actions/setup-android + with: + flutter: ${{ env.flutter }} + java: ${{ env.java }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Set up Appium tests + working-directory: appium-test + run: yarn + + - name: Set up Appium driver + run: APPIUM_SKIP_CHROMEDRIVER_INSTALL=1 npx --yes appium@next driver install uiautomator2 + + - name: Start Appium server + run: npx --yes appium@next & # Appium recommends this until v2 is released + + - name: Run Appium tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ env.android-api }} + script: | + adb emu screenrecord start --time-limit 300 ./recording_video.webm + node appium-test/test.js + + - name: Upload recording + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android: smoke tests recording' + path: recording_video.webm From a18fdc18106a9089f27e2404e1434431fceed62c Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 23:03:42 +0100 Subject: [PATCH 065/201] Fix path of Android local action --- .github/actions/{seteup-android => setup-android}/action.yml | 4 ++-- .github/actions/setup-ios/action.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename .github/actions/{seteup-android => setup-android}/action.yml (97%) diff --git a/.github/actions/seteup-android/action.yml b/.github/actions/setup-android/action.yml similarity index 97% rename from .github/actions/seteup-android/action.yml rename to .github/actions/setup-android/action.yml index e8c3e590..75b4ded7 100644 --- a/.github/actions/seteup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -1,5 +1,5 @@ -name: Set up environment -description: Set up the environment for building and testing the library on a given platform +name: Set up Android environment +description: Set up the environment for building and testing the library on Android inputs: flutter: diff --git a/.github/actions/setup-ios/action.yml b/.github/actions/setup-ios/action.yml index c3ea6b18..187b7413 100644 --- a/.github/actions/setup-ios/action.yml +++ b/.github/actions/setup-ios/action.yml @@ -1,5 +1,5 @@ -name: Set up environment -description: Set up the environment for building and testing the library on a given platform +name: Set up iOS environment +description: Set up the environment for building and testing the library on iOS inputs: flutter: From 5999866535c550916cea56f050c5ab34afeeda7a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 23:16:36 +0100 Subject: [PATCH 066/201] Add `-e` flag to sed command --- .github/actions/setup-android/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 75b4ded7..7d1926d6 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -50,7 +50,7 @@ runs: working-directory: auth0_flutter/example run: | mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml - sed -i 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' android/app/src/main/res/values/strings.xml + sed -i -e 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' android/app/src/main/res/values/strings.xml shell: bash - name: Set Gradle wrapper From 7ffc09c9239708f7697e796f54a3ddf0f6ce485f Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 23:26:44 +0100 Subject: [PATCH 067/201] Use cross-platform sed command --- .github/actions/setup-android/action.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 7d1926d6..2a6c0d4e 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -50,7 +50,8 @@ runs: working-directory: auth0_flutter/example run: | mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml - sed -i -e 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' android/app/src/main/res/values/strings.xml + sed -r -i.bak 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' android/app/src/main/res/values/strings.xml + rm android/app/src/main/res/values/strings.xml.bak shell: bash - name: Set Gradle wrapper From 12b1e643103aa0f65d45b420ffe855e5eac8a6a0 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 23:28:08 +0100 Subject: [PATCH 068/201] Update working directory to simplify paths --- .github/actions/setup-android/action.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 2a6c0d4e..42310e4f 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -47,11 +47,11 @@ runs: shell: bash - name: Set strings.xml - working-directory: auth0_flutter/example + working-directory: auth0_flutter/example/android/app/src/main/res/values run: | - mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml - sed -r -i.bak 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' android/app/src/main/res/values/strings.xml - rm android/app/src/main/res/values/strings.xml.bak + mv strings.xml.example strings.xml + sed -r -i.bak 's/YOUR_AUTH0_DOMAIN/${{ inputs.auth0-domain }}/' strings.xml + rm strings.xml.bak shell: bash - name: Set Gradle wrapper From bf52ff31736c78f1d14a715d7eb44b452272eba0 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 23:42:01 +0100 Subject: [PATCH 069/201] Remove `--split-per-abi` flag --- .github/actions/setup-android/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 42310e4f..9873b908 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -61,5 +61,5 @@ runs: - name: Build Android example app working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi + run: flutter build apk shell: bash From 11d1eb0cf8a8bcd4fa601e2189e0b69aad8c9ade Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Sun, 27 Aug 2023 23:42:13 +0100 Subject: [PATCH 070/201] Use npm instead of yarn --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index eb4bd43b..30bd9981 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -266,7 +266,7 @@ jobs: - name: Set up Appium tests working-directory: appium-test - run: yarn + run: npm install - name: Set up Appium driver run: APPIUM_SKIP_CHROMEDRIVER_INSTALL=1 npx --yes appium@next driver install uiautomator2 From 3ded2cd0885a6ab082aefa5f32b0bebb73e16e02 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 00:03:20 +0100 Subject: [PATCH 071/201] Use Android API 31 --- .github/actions/setup-android/action.yml | 2 +- .github/workflows/main.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 9873b908..42310e4f 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -61,5 +61,5 @@ runs: - name: Build Android example app working-directory: auth0_flutter/example - run: flutter build apk + run: flutter build apk --split-per-abi shell: bash diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 30bd9981..0e82df37 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,7 @@ env: xcode: '14.2' ios-simulator: iPhone 14 java: 11 - android-api: 29 + android-api: 31 jobs: authorize: @@ -278,6 +278,7 @@ jobs: uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ env.android-api }} + arch: x86_64 script: | adb emu screenrecord start --time-limit 300 ./recording_video.webm node appium-test/test.js From 9ef2deafa0d01eff42ed0797ac86489a8e4d6a89 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 00:03:36 +0100 Subject: [PATCH 072/201] Disable universal APK --- auth0_flutter/example/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index 227c00eb..9d582a72 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -92,7 +92,7 @@ android { enable true reset() include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'mips', 'mips64', 'arm64-v8a' - universalApk true + universalApk false } } } From 4dcbf2df9445902af78a06978b30d66c9249cab8 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 00:21:50 +0100 Subject: [PATCH 073/201] Specify env vars --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e82df37..84372b2f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -205,7 +205,7 @@ jobs: uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce if: ${{ failure() }} with: - name: 'iOS: xcresult bundles' + name: 'iOS - xcresult bundles' path: 'auth0_flutter/example/ios/*.xcresult' test-android-unit: @@ -281,11 +281,11 @@ jobs: arch: x86_64 script: | adb emu screenrecord start --time-limit 300 ./recording_video.webm - node appium-test/test.js + USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - name: Upload recording uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce if: ${{ failure() }} with: - name: 'Android: smoke tests recording' + name: 'Android - smoke tests recording' path: recording_video.webm From 4348c14ed8fed5f02f6aba5cf958157fdcf0471c Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 00:36:58 +0100 Subject: [PATCH 074/201] Only build for android-x86 --- .github/actions/setup-android/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 42310e4f..a4fbbb68 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -61,5 +61,5 @@ runs: - name: Build Android example app working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi + run: flutter build apk --target-platform android-x86 shell: bash From 09900b109d6090c14e14fe6025da0a6def20c1c6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 00:48:25 +0100 Subject: [PATCH 075/201] Set AVD target and chrome-related commands --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 84372b2f..8972c674 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -278,8 +278,11 @@ jobs: uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ env.android-api }} + target: playstore arch: x86_64 script: | + adb shell am set-debug-app --persistent com.android.chrome + adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From 3e03a17e58aba067ac35c1008e579b97f4a80a38 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 00:50:45 +0100 Subject: [PATCH 076/201] Use ARM for APK build --- .github/actions/setup-android/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index a4fbbb68..b3e2f76e 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -61,5 +61,5 @@ runs: - name: Build Android example app working-directory: auth0_flutter/example - run: flutter build apk --target-platform android-x86 + run: flutter build apk --target-platform android-arm shell: bash From 8b74b00e1d44da8956f7e8b4bd22e03b6795bffc Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 01:08:53 +0100 Subject: [PATCH 077/201] Remove `--target-platform` flag --- .github/actions/setup-android/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index b3e2f76e..42310e4f 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -61,5 +61,5 @@ runs: - name: Build Android example app working-directory: auth0_flutter/example - run: flutter build apk --target-platform android-arm + run: flutter build apk --split-per-abi shell: bash From 52971ab50fe0e11201067a66e9a6bd75a2c32433 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 01:15:38 +0100 Subject: [PATCH 078/201] Use matrix of Andoroid API-level --- .github/workflows/main.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8972c674..645b229b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,7 +6,6 @@ env: xcode: '14.2' ios-simulator: iPhone 14 java: 11 - android-api: 31 jobs: authorize: @@ -243,7 +242,7 @@ jobs: path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' test-android-smoke: - name: Run native Android smoke tests + name: Run native Android smoke tests using API-level ${{ matrix.android-api }} needs: authorize runs-on: macos-latest environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} @@ -252,6 +251,11 @@ jobs: USER_EMAIL: ${{ secrets.USER_EMAIL }} USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + strategy: + matrix: + android-api: + - 31 + steps: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 @@ -277,7 +281,7 @@ jobs: - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: ${{ env.android-api }} + api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 script: | From a32cdf88fa16c8b37f0521fd777380b7dc4c52d6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 08:52:02 +0100 Subject: [PATCH 079/201] Use existing application ID as identifier --- auth0_flutter/example/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index 9d582a72..e8aa7cf9 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -28,7 +28,7 @@ apply plugin: 'jacoco' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - namespace 'com.auth0.auth0_flutter_example' + namespace exampleAppApplicationId compileSdk 31 if (project.android.hasProperty("namespace")) { namespace exampleAppApplicationId From 01e81ec4aa447a37f13611af47d4133a7a96908f Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 08:52:11 +0100 Subject: [PATCH 080/201] Use API level 31 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 645b229b..ef048fae 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -281,7 +281,7 @@ jobs: - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: ${{ matrix.android-api }} + api-level: 31 target: playstore arch: x86_64 script: | From 6beb5019cd5c1b0ec0614aed6a24c513756c7823 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 10:39:44 +0100 Subject: [PATCH 081/201] Set cores and RAM size --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ef048fae..fc730656 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -284,6 +284,8 @@ jobs: api-level: 31 target: playstore arch: x86_64 + cores: 4 + ram-size: 4096M script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From a95bb065dd5f0427fc05e92f7b242b049394b5a2 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 10:39:53 +0100 Subject: [PATCH 082/201] Fix name of java input --- .github/actions/setup-android/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 42310e4f..1fe2447a 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -6,7 +6,7 @@ inputs: description: The version of Flutter to use required: true - xcode: + java: description: The version of Java to use required: true From 6f0b9e235226b8902658cff5d7dabf6d350daed8 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 10:41:56 +0100 Subject: [PATCH 083/201] Remove cores config --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fc730656..552419f2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -284,7 +284,6 @@ jobs: api-level: 31 target: playstore arch: x86_64 - cores: 4 ram-size: 4096M script: | adb shell am set-debug-app --persistent com.android.chrome From 20fb2ca6a0b9182bb24c649276e38944d150e578 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 10:51:28 +0100 Subject: [PATCH 084/201] Move build APK step to main workflow --- .github/actions/setup-android/action.yml | 7 +------ .github/workflows/main.yml | 8 ++++++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 1fe2447a..0dceb874 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -33,7 +33,7 @@ runs: working-directory: auth0_flutter/example run: flutter pub get shell: bash - + - name: Setup Java uses: actions/setup-java@v3 with: @@ -58,8 +58,3 @@ runs: working-directory: auth0_flutter/example/android run: gradle wrapper shell: bash - - - name: Build Android example app - working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi - shell: bash diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 552419f2..08ad91aa 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -225,6 +225,10 @@ jobs: auth0-domain: ${{ vars.AUTH0_DOMAIN }} auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk --split-per-abi + - name: Run Android unit tests working-directory: auth0_flutter/example/android run: ./gradlew testDebugUnitTest createDebugCoverageReport @@ -268,6 +272,10 @@ jobs: auth0-domain: ${{ vars.AUTH0_DOMAIN }} auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk --split-per-abi + - name: Set up Appium tests working-directory: appium-test run: npm install From debd5dac519f4fd51e2908ed63e1a59e17542533 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 10:59:54 +0100 Subject: [PATCH 085/201] Remove ram-size config --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 08ad91aa..4965b7c0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -292,7 +292,6 @@ jobs: api-level: 31 target: playstore arch: x86_64 - ram-size: 4096M script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 44c4a09ff8eda77c3b66f5ac456722e4036a1779 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 11:44:39 +0100 Subject: [PATCH 086/201] Set both RAM and heap size --- .github/actions/setup-android/action.yml | 2 +- .github/actions/setup-ios/action.yml | 2 +- .github/workflows/main.yml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/actions/setup-android/action.yml b/.github/actions/setup-android/action.yml index 0dceb874..ef23d1e4 100644 --- a/.github/actions/setup-android/action.yml +++ b/.github/actions/setup-android/action.yml @@ -9,7 +9,7 @@ inputs: java: description: The version of Java to use required: true - + auth0-domain: description: The Auth0 domain required: true diff --git a/.github/actions/setup-ios/action.yml b/.github/actions/setup-ios/action.yml index 187b7413..d9edbba6 100644 --- a/.github/actions/setup-ios/action.yml +++ b/.github/actions/setup-ios/action.yml @@ -9,7 +9,7 @@ inputs: xcode: description: The version of Xcode to use required: true - + auth0-domain: description: The Auth0 domain required: true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4965b7c0..c5ad0369 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -292,6 +292,8 @@ jobs: api-level: 31 target: playstore arch: x86_64 + ram-size: 4096M + heap-size: 2048M script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 241a0a2c0088bdc070eac3802217c6183086e110 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Mon, 28 Aug 2023 12:27:23 +0100 Subject: [PATCH 087/201] Set disk-size config --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c5ad0369..79539146 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -294,6 +294,7 @@ jobs: arch: x86_64 ram-size: 4096M heap-size: 2048M + disk-size: 20G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 762275ae53009bd0c6afb554d74a108f5d9b4758 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 29 Aug 2023 22:54:41 +0100 Subject: [PATCH 088/201] Use relative app dir on appium tests --- appium-test/test.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index cb5a4b0c..bb1dc52d 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -1,4 +1,4 @@ -const {remote} = require('webdriverio'); +const { remote } = require('webdriverio'); const capabilities = { platformName: 'Android', @@ -6,7 +6,7 @@ const capabilities = { 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', - 'appium:app': './auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk' + 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk` }; const wdOpts = { @@ -36,10 +36,12 @@ async function runTest() { const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); await logoutButton.click(); + + await loginButton.waitForExist(); } finally { await driver.pause(1000); await driver.deleteSession(); } } -runTest(); \ No newline at end of file +runTest(); From 605cd99e522439f11f28853c390b72dc75219fe4 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 29 Aug 2023 23:28:15 +0100 Subject: [PATCH 089/201] Use API-level 33 --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 79539146..d5f6a82c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -258,7 +258,7 @@ jobs: strategy: matrix: android-api: - - 31 + - 33 steps: - name: Checkout @@ -289,7 +289,7 @@ jobs: - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: 31 + api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 ram-size: 4096M From d525593bc45b8d15e7dc11f6b28abbdf57f9ef0d Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 29 Aug 2023 23:43:01 +0100 Subject: [PATCH 090/201] Remove RAM, heap and disk size configs --- .github/workflows/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d5f6a82c..2f45208a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -292,9 +292,6 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 4096M - heap-size: 2048M - disk-size: 20G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 0993473afbb37b0929edfcbf807208ef84d05ed1 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Tue, 29 Aug 2023 23:44:31 +0100 Subject: [PATCH 091/201] Set ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2f45208a..13f8d597 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -254,6 +254,7 @@ jobs: env: USER_EMAIL: ${{ secrets.USER_EMAIL }} USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 50 strategy: matrix: From f2584f9d514978d81808685c7e503de0f706d984 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 00:06:55 +0100 Subject: [PATCH 092/201] Set lower RAM and heap size --- .github/workflows/main.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 13f8d597..25c12092 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,6 +293,9 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 + ram-size: 2048M + heap-size: 1024M + disk-size: 20G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 1329280f83d2d0f08b874f6aed398791379a804a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 00:25:07 +0100 Subject: [PATCH 093/201] Increase RAM size --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 25c12092..eb242c86 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 2048M + ram-size: 8192M heap-size: 1024M disk-size: 20G script: | From 6c37c129da6c90486f73d9ef1047aa6c97a15d15 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 11:39:59 +0100 Subject: [PATCH 094/201] Use Ubuntu runner for android smoke tests --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index eb242c86..7868ca3b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -248,7 +248,7 @@ jobs: test-android-smoke: name: Run native Android smoke tests using API-level ${{ matrix.android-api }} needs: authorize - runs-on: macos-latest + runs-on: ubuntu-latest environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} env: From 7959e510dccc342288f92510b94f418af5ac087e Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 11:40:17 +0100 Subject: [PATCH 095/201] Set 4 gigs of ram for Android emulator --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7868ca3b..d187e687 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 8192M + ram-size: 4096M heap-size: 1024M disk-size: 20G script: | From 7f7105f6224d1a9232f0e4e62080ee9f76452881 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 12:00:03 +0100 Subject: [PATCH 096/201] Adjust disk-size config --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d187e687..b200e113 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -295,7 +295,7 @@ jobs: arch: x86_64 ram-size: 4096M heap-size: 1024M - disk-size: 20G + disk-size: 12G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 0f23975625f7fe22e35c936c3893a1cf5c111389 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 12:17:43 +0100 Subject: [PATCH 097/201] Reduce RAM size config --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b200e113..3effa208 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 4096M + ram-size: 2048M heap-size: 1024M disk-size: 12G script: | From ddca8570ae1c5675096e4377b9662d000198bf85 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 12:39:57 +0100 Subject: [PATCH 098/201] Remove RAM and disk size configs on ubuntu runner --- .github/workflows/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3effa208..0c9815f1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,9 +293,6 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 2048M - heap-size: 1024M - disk-size: 12G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From c4819b703b5392868bb39db09925094d2bf86521 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 13:03:58 +0100 Subject: [PATCH 099/201] Use large macOS runner --- .github/workflows/main.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0c9815f1..08ae7c7c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -248,7 +248,7 @@ jobs: test-android-smoke: name: Run native Android smoke tests using API-level ${{ matrix.android-api }} needs: authorize - runs-on: ubuntu-latest + runs-on: macos-latest-xl environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} env: @@ -293,6 +293,9 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 + ram-size: 2048M + heap-size: 1024M + disk-size: 12G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 6ad90accc4bf927c72d0e6fa4ea6542990366a18 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 14:41:05 +0100 Subject: [PATCH 100/201] Increase emulator RAM in large macOS runner --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 08ae7c7c..9fcdcd03 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,9 +293,9 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 2048M + ram-size: 4096M heap-size: 1024M - disk-size: 12G + disk-size: 20G script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 0f4b0f93f9e0e9148168616a34e93df806cd1d99 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 14:55:07 +0100 Subject: [PATCH 101/201] Add pre-emulator-launch-script --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9fcdcd03..04407b50 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -296,6 +296,7 @@ jobs: ram-size: 4096M heap-size: 1024M disk-size: 20G + pre-emulator-launch-script: adb shell pm clear com.google.android.apps.nexuslauncher script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 8e92185659a0d9dce8350c925e9b0ef14ca29aba Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 15:05:28 +0100 Subject: [PATCH 102/201] Move existing ADB commands to pre-emulator-launch-script --- .github/workflows/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 04407b50..2c413c9b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -296,10 +296,11 @@ jobs: ram-size: 4096M heap-size: 1024M disk-size: 20G - pre-emulator-launch-script: adb shell pm clear com.google.android.apps.nexuslauncher - script: | + pre-emulator-launch-script: | + adb shell pm clear com.google.android.apps.nexuslauncher adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + script: | adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From 56ce7b381f6eaabd848ec8cd944cb19407e24806 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 15:24:05 +0100 Subject: [PATCH 103/201] Increase tests timeout --- .github/workflows/main.yml | 2 +- appium-test/test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2c413c9b..ab9bca30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -298,9 +298,9 @@ jobs: disk-size: 20G pre-emulator-launch-script: | adb shell pm clear com.google.android.apps.nexuslauncher + script: | adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - script: | adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js diff --git a/appium-test/test.js b/appium-test/test.js index bb1dc52d..e30e8bf3 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -13,7 +13,7 @@ const wdOpts = { host: process.env.APPIUM_HOST || 'localhost', port: parseInt(process.env.APPIUM_PORT, 10) || 4723, logLevel: 'info', - waitforTimeout: 180000, + waitforTimeout: 300000, capabilities, }; From 58b4fedfb8ed498952183ed5c18693f612c8250d Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 16:57:29 +0100 Subject: [PATCH 104/201] Increase emulator timeout --- appium-test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index e30e8bf3..675be7e0 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -13,7 +13,7 @@ const wdOpts = { host: process.env.APPIUM_HOST || 'localhost', port: parseInt(process.env.APPIUM_PORT, 10) || 4723, logLevel: 'info', - waitforTimeout: 300000, + waitforTimeout: 500000, capabilities, }; From 10939fc4c3847f3fa4f63cb7c1bc843e1ae9ef9f Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 19:07:17 +0100 Subject: [PATCH 105/201] Wipe emulator before launching --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ab9bca30..701a4c36 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -296,9 +296,9 @@ jobs: ram-size: 4096M heap-size: 1024M disk-size: 20G - pre-emulator-launch-script: | - adb shell pm clear com.google.android.apps.nexuslauncher + pre-emulator-launch-script: emulator -avd test -wipe-data script: | + adb shell pm clear com.google.android.apps.nexuslauncher adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm From 06db142c1f251d5b5be544fa67d1cbafd2c3a7e5 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 19:22:12 +0100 Subject: [PATCH 106/201] Move wipe command to after boot --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 701a4c36..fc82fb82 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -296,8 +296,8 @@ jobs: ram-size: 4096M heap-size: 1024M disk-size: 20G - pre-emulator-launch-script: emulator -avd test -wipe-data script: | + emulator -avd test -wipe-data adb shell pm clear com.google.android.apps.nexuslauncher adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From c7979b182936cb2f52551b1e84cf26453b988587 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 19:39:01 +0100 Subject: [PATCH 107/201] Remove adb command --- .github/workflows/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fc82fb82..b1b52251 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -297,9 +297,7 @@ jobs: heap-size: 1024M disk-size: 20G script: | - emulator -avd test -wipe-data adb shell pm clear com.google.android.apps.nexuslauncher - adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From ab5aa2c70d71e31e4601c8ef0b473ac4ce0b87f0 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 20:12:25 +0100 Subject: [PATCH 108/201] Tweak emulator settings --- .github/workflows/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b1b52251..5772460d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,9 +293,6 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - ram-size: 4096M - heap-size: 1024M - disk-size: 20G script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' From 85a6bc6a9cae36f001ff905536541e72b1669de4 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:01:40 +0100 Subject: [PATCH 109/201] Uninstall io.appium.settings through adb --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5772460d..f5e9a44a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -295,7 +295,9 @@ jobs: arch: x86_64 script: | adb shell pm clear com.google.android.apps.nexuslauncher + adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + adb uninstall io.appium.settings adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From 25871dcdab0c44dbfad18df560e3e7753c67deef Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:18:01 +0100 Subject: [PATCH 110/201] Don't uninstall Appium settings app --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f5e9a44a..0ed109a8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -297,7 +297,6 @@ jobs: adb shell pm clear com.google.android.apps.nexuslauncher adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - adb uninstall io.appium.settings adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From f075dbd733475ef86474c9c4d8eae502f147bc4a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:26:08 +0100 Subject: [PATCH 111/201] Update appium tests dependencies --- appium-test/package-lock.json | 3971 ++++++++++----------------------- 1 file changed, 1229 insertions(+), 2742 deletions(-) diff --git a/appium-test/package-lock.json b/appium-test/package-lock.json index 468879cb..c0ddbb92 100644 --- a/appium-test/package-lock.json +++ b/appium-test/package-lock.json @@ -1,29 +1,56 @@ { "name": "auth0-flutter-test", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "auth0-flutter-test", "version": "1.0.0", - "license": "ISC", + "license": "Apache-2.0", "devDependencies": { "webdriverio": "^8.11.2" } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", @@ -34,13 +61,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz", + "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -73,15 +100,6 @@ "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -110,18 +128,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.3.0.tgz", - "integrity": "sha512-an3QdbNPkuU6qpxpbssxAbjRLJcF+eP4L8UqIY3+6n0sbaVxw5pz7PiCLy9g32XEZuoamUlV5ZQPnA6FxvkIHA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.7.0.tgz", + "integrity": "sha512-sl7zI0IkbQGak/+IE3VEEZab5SSOlI5F6558WvzWGC1n3+C722rfewC1ZIkcF9dsoGSsxhsONoseVlNQG4wWvQ==", "dev": true, "dependencies": { "debug": "4.3.4", "extract-zip": "2.0.1", - "http-proxy-agent": "5.0.0", - "https-proxy-agent": "5.0.1", "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "tar-fs": "2.1.1", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", "unbzip2-stream": "1.4.3", "yargs": "17.7.1" }, @@ -129,44 +145,13 @@ "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@puppeteer/browsers/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=16.3.0" } }, - "node_modules/@puppeteer/browsers/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/@sindresorhus/is": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", - "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", "dev": true, "engines": { "node": ">=14.16" @@ -187,14 +172,11 @@ "node": ">=14.16" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true }, "node_modules/@types/http-cache-semantics": { "version": "4.0.1", @@ -203,9 +185,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", - "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==", + "version": "20.5.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", + "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==", "dev": true }, "node_modules/@types/normalize-package-data": { @@ -240,19 +222,19 @@ } }, "node_modules/@wdio/config": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.11.0.tgz", - "integrity": "sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==", + "version": "8.15.10", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.15.10.tgz", + "integrity": "sha512-TC0Gc2v2UNkyulE3IfFxKD/mjmLvnr1AFhlbMnJ3+5wpp2T/TdqhkweCTyCotFn9vvYyRV7eVPAvsL+1nAR+4A==", "dev": true, "dependencies": { "@wdio/logger": "8.11.0", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", + "@wdio/types": "8.15.10", + "@wdio/utils": "8.15.10", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", "import-meta-resolve": "^3.0.0", - "read-pkg-up": "^9.1.0" + "read-pkg-up": "^10.0.0" }, "engines": { "node": "^16.13 || >=18" @@ -274,9 +256,9 @@ } }, "node_modules/@wdio/protocols": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz", - "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==", + "version": "8.14.6", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.14.6.tgz", + "integrity": "sha512-KM2taEMUDEt1of0Na/6kIv/aNzX0pmr0etpKRci4QrWPQ1O11dXxWjkatFILQz6qOVKvQ0v+vkTPQRUllmH+uQ==", "dev": true }, "node_modules/@wdio/repl": { @@ -292,9 +274,9 @@ } }, "node_modules/@wdio/types": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.10.4.tgz", - "integrity": "sha512-aLJ1QQW+hhALeRK3bvMLjIrlUVyhOs3Od+91pR4Z4pLwyeNG1bJZCJRD5bAJK/mm7CnFa0NsdixPS9jJxZcRrw==", + "version": "8.15.10", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.15.10.tgz", + "integrity": "sha512-ncvlnRgIwSKYP8tN0bPVhVRQWgnimplw8EdWSON37xNOZQs/EOQQW9yaiSBWjF5J+LGvMHSlT8nCLgXPCJIOQg==", "dev": true, "dependencies": { "@types/node": "^20.1.0" @@ -304,55 +286,41 @@ } }, "node_modules/@wdio/utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz", - "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==", + "version": "8.15.10", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.15.10.tgz", + "integrity": "sha512-NwxPxqvtZPoGdV0sZ0frTpy1YXZOIN+aG5xT6pf16/g7RYiuKYqzKZTB81EoBnLJ0t+jxT//dRRzoq0/Elx7lA==", "dev": true, "dependencies": { + "@puppeteer/browsers": "^1.6.0", "@wdio/logger": "8.11.0", - "@wdio/types": "8.10.4", + "@wdio/types": "8.15.10", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.2.0", + "get-port": "^7.0.0", + "got": "^13.0.0", "import-meta-resolve": "^3.0.0", - "p-iteration": "^1.1.8" + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "wait-port": "^1.0.4" }, "engines": { "node": "^16.13 || >=18" } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "ms": "2.1.2" + "debug": "^4.3.4" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 14" } }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/ansi-regex": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", @@ -378,16 +346,16 @@ } }, "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", "dev": true, "dependencies": { "archiver-utils": "^2.1.0", - "async": "^3.2.3", + "async": "^3.2.4", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", + "readdir-glob": "^1.1.2", "tar-stream": "^2.2.0", "zip-stream": "^4.1.0" }, @@ -497,12 +465,30 @@ "dequal": "^2.0.3" } }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", + "dev": true + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -529,6 +515,37 @@ } ] }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -540,6 +557,12 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", + "dev": true + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -582,6 +605,24 @@ "node": "*" } }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/cacheable-lookup": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", @@ -592,15 +633,15 @@ } }, "node_modules/cacheable-request": { - "version": "10.2.12", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", - "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", + "version": "10.2.13", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.13.tgz", + "integrity": "sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==", "dev": true, "dependencies": { "@types/http-cache-semantics": "^4.0.1", "get-stream": "^6.0.1", "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", + "keyv": "^4.5.3", "mimic-response": "^4.0.0", "normalize-url": "^8.0.0", "responselike": "^3.0.0" @@ -621,10 +662,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -633,34 +686,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, "node_modules/chromium-bidi": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.9.tgz", - "integrity": "sha512-u3DC6XwgLCA9QJ5ak1voPslCmacQdulZNCPsI3qNXxSnEcZS7DFIbww+5RM2bznMEje7cc0oydavRLRvOIZtHw==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", "dev": true, "dependencies": { "mitt": "3.0.0" @@ -789,6 +818,15 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, + "node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/compress-commons": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", @@ -842,12 +880,32 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, "dependencies": { - "node-fetch": "^2.6.11" + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/cross-spawn": { @@ -891,13 +949,30 @@ "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", "dev": true }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/decamelize": { @@ -957,6 +1032,20 @@ "node": ">=10" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -966,37 +1055,51 @@ "node": ">=6" } }, - "node_modules/devtools": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.11.0.tgz", - "integrity": "sha512-j1wXFQyjswJ6doAV1+h4Bxl8+Oeb8SMpWTpBVa0DurGsxfft8sU2OhDlMo5tx/zbX82X5sGyJDMnKHqBJ2XRvQ==", + "node_modules/devtools-protocol": { + "version": "0.0.1188743", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1188743.tgz", + "integrity": "sha512-FZDQC58vLiGR2mjSgsMzU8aEJieovMonIyxf38b775eYdIfAYgSzyAWnDf0Eq6ouF/L9qcbqR8jcQeIC34jp/w==", + "dev": true + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", "dev": true, "dependencies": { - "@types/node": "^20.1.0", - "@wdio/config": "8.11.0", - "@wdio/logger": "8.11.0", - "@wdio/protocols": "8.11.0", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", - "chrome-launcher": "^0.15.0", - "edge-paths": "^3.0.5", - "import-meta-resolve": "^3.0.0", - "puppeteer-core": "20.3.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^9.0.0", - "which": "^3.0.0" - }, - "engines": { - "node": "^16.13 || >=18" + "readable-stream": "^2.0.2" } }, - "node_modules/devtools-protocol": { - "version": "0.0.1152884", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1152884.tgz", - "integrity": "sha512-9eP6OmCoU1cWArpXLuzyZQcBJ2PkINOh8Nwx8W5i8u6NDigDE5/mPlLLBAfshwn5YVvIz6ZQ9jbs0PZvKGccdQ==", + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1034,6 +1137,24 @@ "node": ">= 8" } }, + "node_modules/edgedriver": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.3.5.tgz", + "integrity": "sha512-gIZI93Lj9VoyaPKg0i3pszBvFC0WIuzYnljvN0G4q8JD8V99Ee00JoKKKu6zY9x7/rdg/LSGWxib5ThUCfG4iw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@wdio/logger": "^8.11.0", + "decamelize": "^6.0.0", + "edge-paths": "^3.0.5", + "node-fetch": "^3.3.2", + "unzipper": "^0.10.14", + "which": "^3.0.1" + }, + "bin": { + "edgedriver": "bin/edgedriver.js" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -1068,24 +1189,72 @@ } }, "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/extract-zip": { + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "dependencies": { - "@types/yauzl": "^2.9.1", "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" @@ -1100,35 +1269,18 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -1138,6 +1290,29 @@ "pend": "~1.2.0" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", @@ -1179,24 +1354,88 @@ "node": ">= 14.17" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "node_modules/geckodriver": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.2.0.tgz", + "integrity": "sha512-I2BlybeMFMzpxHRrh8X4VwP4ys74JHszyUgfezOrbTR7PEybFneDcuEjKIQxKV6vFPmsdwhwF1x8AshdQo56xA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@wdio/logger": "^8.11.0", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.1", + "tar-fs": "^3.0.4", + "unzipper": "^0.10.14", + "which": "^3.0.1" + }, + "bin": { + "geckodriver": "bin/geckodriver.js" + }, + "engines": { + "node": "^16.13 || >=18 || >=20" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1206,6 +1445,18 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-port": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz", + "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -1221,17 +1472,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-uri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.1.tgz", + "integrity": "sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^5.0.1", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz", + "integrity": "sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/glob": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", - "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^2.0.3", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { "glob": "dist/cjs/src/bin.js" @@ -1244,9 +1519,9 @@ } }, "node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", "dev": true, "dependencies": { "@sindresorhus/is": "^5.2.0", @@ -1262,7 +1537,7 @@ "responselike": "^3.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sindresorhus/got?sponsor=1" @@ -1314,27 +1589,15 @@ } }, "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.0.tgz", + "integrity": "sha512-ICclEpTLhHj+zCuSb2/usoNXSVkxUSIopre+b1w8NDY9Dntp9LO4vLdHYI336TH8sAqwrRgnSfdkBG2/YpisHA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/http-cache-semantics": { @@ -1344,42 +1607,18 @@ "dev": true }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 14" } }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/http2-wrapper": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", @@ -1394,41 +1633,18 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", + "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">= 14" } }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -1475,6 +1691,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -1482,9 +1704,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -1493,21 +1715,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1529,18 +1736,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1554,13 +1749,11 @@ "dev": true }, "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.1.tgz", + "integrity": "sha512-4iSY3Bh1Htv+kLhiiZunUhQ+OYXIn0ze3ulq8JeWrFKmhPAJSySV2+kdtRh2pGcCeF0s6oR8Oc+pYZynJj4t8A==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" "@isaacs/cliui": "^8.0.2" }, "engines": { @@ -1586,15 +1779,27 @@ "dev": true }, "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", + "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -1654,22 +1859,32 @@ "safe-buffer": "~5.1.0" } }, - "node_modules/lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, - "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", "dev": true }, + "node_modules/locate-app": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.1.0.tgz", + "integrity": "sha512-rcVo/iLUxrd9d0lrmregK/Z5Y5NCpSwf9KlMbPpOHmKmdxdQY1Fj8NDQ5QymJTryCsBLqwmniFv2f3JKbk9Bvg==", + "dev": true, + "dependencies": { + "n12": "0.4.0", + "type-fest": "2.13.0", + "userhome": "1.0.0" + } + }, "node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", @@ -1759,20 +1974,14 @@ } }, "node_modules/lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", "dev": true, "engines": { "node": "14 || >=16.14" } }, - "node_modules/marky": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", - "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true - }, "node_modules/mimic-response": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", @@ -1786,9 +1995,9 @@ } }, "node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -1800,10 +2009,19 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -1815,6 +2033,18 @@ "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", "dev": true }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -1822,44 +2052,76 @@ "dev": true }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, + "node_modules/n12": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/n12/-/n12-0.4.0.tgz", + "integrity": "sha512-p/hj4zQ8d3pbbFLQuN1K9honUxiDDhueOWyFLw/XgBv+wZCE44bcLH4CIcsolOceJQduh4Jf7m/LfaTxyGmGtQ==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, "engines": { - "node": "4.x || >=6.0.0" + "node": ">= 0.4.0" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, - "peerDependencies": { - "encoding": "^0.1.0" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/normalize-path": { @@ -1901,15 +2163,6 @@ "node": ">=12.20" } }, - "node_modules/p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -1940,19 +2193,65 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz", + "integrity": "sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.0.0.tgz", + "integrity": "sha512-kP+TQYAzAiVnzOlWOe0diD6L35s9bJh0SCn95PIbZFKrOYuIRQsQkeWEYxzVDuHTt9V9YqvYCJ2Qo4z9wdfZPw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1986,13 +2285,13 @@ } }, "node_modules/path-scurry": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", - "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -2022,6 +2321,34 @@ "node": ">=0.4.0" } }, + "node_modules/proxy-agent": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", + "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -2039,20 +2366,20 @@ } }, "node_modules/puppeteer-core": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.3.0.tgz", - "integrity": "sha512-264pBrIui5bO6NJeOcbJrLa0OCwmA4+WK00JMrLIKTfRiqe2gx8KWTzLsjyw/bizErp3TKS7vt/I0i5fTC+mAw==", + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", + "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", "dev": true, "dependencies": { - "@puppeteer/browsers": "1.3.0", - "chromium-bidi": "0.4.9", - "cross-fetch": "3.1.6", + "@puppeteer/browsers": "1.4.6", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", "debug": "4.3.4", - "devtools-protocol": "0.0.1120988", + "devtools-protocol": "0.0.1147663", "ws": "8.13.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=16.3.0" }, "peerDependencies": { "typescript": ">= 4.7.4" @@ -2063,33 +2390,39 @@ } } }, - "node_modules/puppeteer-core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/puppeteer-core/node_modules/@puppeteer/browsers": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", + "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=6.0" + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" }, "peerDependenciesMeta": { - "supports-color": { + "typescript": { "optional": true } } }, "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.1120988", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1120988.tgz", - "integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==", - "dev": true - }, - "node_modules/puppeteer-core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "0.0.1147663", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", + "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", "dev": true }, "node_modules/query-selector-shadow-dom": { @@ -2098,6 +2431,12 @@ "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", "dev": true }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -2111,35 +2450,59 @@ } }, "node_modules/read-pkg": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", - "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^2.0.0" + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" }, "engines": { - "node": ">=12.20" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", - "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "dependencies": { "find-up": "^6.3.0", - "read-pkg": "^7.1.0", - "type-fest": "^2.5.0" + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", + "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.3.1.tgz", + "integrity": "sha512-pphNW/msgOUSkJbH58x8sqpq8uQj6b0ZKGxEsLKMUnGorRcDjrUaLS+39+/ub41JNTwrrMyJcUB8+YZs3mbwqw==", + "dev": true, + "engines": { + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2225,6 +2588,66 @@ "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", "dev": true }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/safaridriver": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-0.1.0.tgz", + "integrity": "sha512-azzzIP3gR1TB9bVPv7QO4Zjw0rR1BWEU/s2aFdUMN48gxDjxEB13grAEuXDmkKPgE74cObymDxmAmZnL3clj4w==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -2246,9 +2669,9 @@ ] }, "node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2273,31 +2696,25 @@ } }, "node_modules/serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.2.tgz", + "integrity": "sha512-o43i0jLcA0LXA5Uu+gI1Vj+lF66KR9IAcy0ThbGq1bAMPN+k5IgSHsulfnqf/ddKAz6dWf+k8PD5hAr9oCSHEQ==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "type-fest": "^2.12.2" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/shebang-command": { "version": "2.0.0", @@ -2321,9 +2738,9 @@ } }, "node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "engines": { "node": ">=14" @@ -2332,6 +2749,60 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz", + "integrity": "sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/socks/node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -2364,6 +2835,16 @@ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, + "node_modules/streamx": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz", + "integrity": "sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2482,15 +2963,25 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "dependencies": { - "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" + } + }, + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/tar-stream": { @@ -2521,10 +3012,25 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.13.0.tgz", + "integrity": "sha512-lPfAm42MxE4/456+QyIaaVBAwgpJb6xZ8PRu09utnhPdWwcyj9vgy6Sq0Z5yNbJ21EdxB5dRU/Qg8bsyAMtlcw==", "dev": true, "engines": { "node": ">=12.20" @@ -2533,25 +3039,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -2562,45 +3049,198 @@ "through": "^2.3.8" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/userhome": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.0.tgz", + "integrity": "sha512-ayFKY3H+Pwfy4W98yPdtH1VqH4psDeyW8lYYFzfecR9d6hqLpqhecktvYR3SEEXt7vG0S1JEpciI3g94pMErig==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/wait-port": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.0.4.tgz", + "integrity": "sha512-w8Ftna3h6XSFWWc2JC5gZEgp64nz8bnaTp5cvzbJSZ53j+omktWTDdwXxEF0jM8YveviLgFWvNGrSvRHnkyHyw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "commander": "^9.3.0", + "debug": "^4.3.4" + }, + "bin": { + "wait-port": "bin/wait-port.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/wait-port/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wait-port/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/wait-port/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wait-port/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wait-port/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wait-port/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" } }, "node_modules/webdriver": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz", - "integrity": "sha512-hSpUZYzUA65t4DDtKujCHUX6hpFTUleb7lWMcf5xjPz8sxWrK9R8NIw7pXt/GU6PVS331nGAaYkzoXrqz2VB8w==", + "version": "8.15.10", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.15.10.tgz", + "integrity": "sha512-BOrldWcnHfjggPhVLsJPTjv7typD7LlJI2eWNM8u+3T8GuVy57TamFvSudGA3pIaac+bfPv8TPY3sDYk2Fe9QA==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.11.0", + "@wdio/config": "8.15.10", "@wdio/logger": "8.11.0", - "@wdio/protocols": "8.11.0", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", - "deepmerge-ts": "^5.0.0", + "@wdio/protocols": "8.14.6", + "@wdio/types": "8.15.10", + "@wdio/utils": "8.15.10", + "deepmerge-ts": "^5.1.0", "got": "^ 12.6.1", "ky": "^0.33.0", "ws": "^8.8.0" @@ -2609,40 +3249,84 @@ "node": "^16.13 || >=18" } }, + "node_modules/webdriver/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webdriver/node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/webdriverio": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.11.2.tgz", - "integrity": "sha512-e/9WkdNTfWeoaSo2UzK0Giec/nQX3i7U9J8esimhozH/EpwSqIaEJ2pRRlxRVafEhe2OBG1QDhnLnDjdCC5Hxg==", + "version": "8.15.10", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.15.10.tgz", + "integrity": "sha512-t/phKZbv2uQzPgwew1V1G77XvsrbARk8GTfss1WN9xRjRKRlrKx/yrBlCvVAG0ulvJ2SmmVMow8RgxUL2cVcLw==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.11.0", + "@wdio/config": "8.15.10", "@wdio/logger": "8.11.0", - "@wdio/protocols": "8.11.0", + "@wdio/protocols": "8.14.6", "@wdio/repl": "8.10.1", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", + "@wdio/types": "8.15.10", + "@wdio/utils": "8.15.10", "archiver": "^5.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools": "8.11.0", - "devtools-protocol": "^0.0.1152884", + "devtools-protocol": "^0.0.1188743", "grapheme-splitter": "^1.0.2", "import-meta-resolve": "^3.0.0", "is-plain-obj": "^4.1.0", "lodash.clonedeep": "^4.5.0", "lodash.zip": "^4.2.0", "minimatch": "^9.0.0", - "puppeteer-core": "20.3.0", + "puppeteer-core": "^20.9.0", "query-selector-shadow-dom": "^1.0.0", "resq": "^1.9.1", "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "8.11.1" + "serialize-error": "^11.0.1", + "webdriver": "8.15.10" }, "engines": { "node": "^16.13 || >=18" + }, + "peerDependencies": { + "devtools": "^8.14.0" + }, + "peerDependenciesMeta": { + "devtools": { + "optional": true + } } }, "node_modules/webidl-conversions": { @@ -2931,2202 +3615,5 @@ "node": ">= 10" } } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.5" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true - }, - "@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - } - } - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@puppeteer/browsers": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.3.0.tgz", - "integrity": "sha512-an3QdbNPkuU6qpxpbssxAbjRLJcF+eP4L8UqIY3+6n0sbaVxw5pz7PiCLy9g32XEZuoamUlV5ZQPnA6FxvkIHA==", - "dev": true, - "requires": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "http-proxy-agent": "5.0.0", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "@sindresorhus/is": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.4.1.tgz", - "integrity": "sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.1" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "@types/node": { - "version": "20.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.2.tgz", - "integrity": "sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "@types/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", - "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", - "dev": true - }, - "@types/ws": { - "version": "8.5.5", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", - "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@wdio/config": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.11.0.tgz", - "integrity": "sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==", - "dev": true, - "requires": { - "@wdio/logger": "8.11.0", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^3.0.0", - "read-pkg-up": "^9.1.0" - } - }, - "@wdio/logger": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz", - "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==", - "dev": true, - "requires": { - "chalk": "^5.1.2", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^7.1.0" - } - }, - "@wdio/protocols": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz", - "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==", - "dev": true - }, - "@wdio/repl": { - "version": "8.10.1", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-8.10.1.tgz", - "integrity": "sha512-VZ1WFHTNKjR8Ga97TtV2SZM6fvRjWbYI2i/f4pJB4PtusorKvONAMJf2LQcUBIyzbVobqr7KSrcjmSwRolI+yw==", - "dev": true, - "requires": { - "@types/node": "^20.1.0" - } - }, - "@wdio/types": { - "version": "8.10.4", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.10.4.tgz", - "integrity": "sha512-aLJ1QQW+hhALeRK3bvMLjIrlUVyhOs3Od+91pR4Z4pLwyeNG1bJZCJRD5bAJK/mm7CnFa0NsdixPS9jJxZcRrw==", - "dev": true, - "requires": { - "@types/node": "^20.1.0" - } - }, - "@wdio/utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz", - "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==", - "dev": true, - "requires": { - "@wdio/logger": "8.11.0", - "@wdio/types": "8.10.4", - "import-meta-resolve": "^3.0.0", - "p-iteration": "^1.1.8" - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - } - }, - "archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "requires": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "requires": { - "dequal": "^2.0.3" - } - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "dev": true - }, - "cacheable-request": { - "version": "10.2.12", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.12.tgz", - "integrity": "sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } - } - }, - "chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "dev": true, - "requires": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - } - }, - "chromium-bidi": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.9.tgz", - "integrity": "sha512-u3DC6XwgLCA9QJ5ak1voPslCmacQdulZNCPsI3qNXxSnEcZS7DFIbww+5RM2bznMEje7cc0oydavRLRvOIZtHw==", - "dev": true, - "requires": { - "mitt": "3.0.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "dev": true, - "requires": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true - }, - "crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dev": true, - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - } - }, - "cross-fetch": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz", - "integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==", - "dev": true, - "requires": { - "node-fetch": "^2.6.11" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css-shorthand-properties": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", - "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", - "dev": true - }, - "css-value": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, - "deepmerge-ts": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-5.1.0.tgz", - "integrity": "sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==", - "dev": true - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true - }, - "devtools": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.11.0.tgz", - "integrity": "sha512-j1wXFQyjswJ6doAV1+h4Bxl8+Oeb8SMpWTpBVa0DurGsxfft8sU2OhDlMo5tx/zbX82X5sGyJDMnKHqBJ2XRvQ==", - "dev": true, - "requires": { - "@types/node": "^20.1.0", - "@wdio/config": "8.11.0", - "@wdio/logger": "8.11.0", - "@wdio/protocols": "8.11.0", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", - "chrome-launcher": "^0.15.0", - "edge-paths": "^3.0.5", - "import-meta-resolve": "^3.0.0", - "puppeteer-core": "20.3.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^9.0.0", - "which": "^3.0.0" - } - }, - "devtools-protocol": { - "version": "0.0.1152884", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1152884.tgz", - "integrity": "sha512-9eP6OmCoU1cWArpXLuzyZQcBJ2PkINOh8Nwx8W5i8u6NDigDE5/mPlLLBAfshwn5YVvIz6ZQ9jbs0PZvKGccdQ==", - "dev": true - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "edge-paths": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", - "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", - "dev": true, - "requires": { - "@types/which": "^2.0.1", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", - "dev": true - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "requires": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - } - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "dev": true - }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", - "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" - } - }, - "got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "dev": true, - "requires": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "dependencies": { - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "import-meta-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", - "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "ky": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", - "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", - "dev": true - }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "marky": "^1.2.2" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "requires": { - "p-locate": "^6.0.0" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true - }, - "lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true - }, - "lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", - "dev": true - }, - "loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true - }, - "loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true - }, - "lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", - "dev": true - }, - "marky": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", - "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true - }, - "mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "dev": true - }, - "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", - "dev": true - }, - "mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", - "dev": true - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "dev": true - }, - "p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true - }, - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "requires": { - "p-limit": "^4.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-scurry": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz", - "integrity": "sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==", - "dev": true, - "requires": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "puppeteer-core": { - "version": "20.3.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.3.0.tgz", - "integrity": "sha512-264pBrIui5bO6NJeOcbJrLa0OCwmA4+WK00JMrLIKTfRiqe2gx8KWTzLsjyw/bizErp3TKS7vt/I0i5fTC+mAw==", - "dev": true, - "requires": { - "@puppeteer/browsers": "1.3.0", - "chromium-bidi": "0.4.9", - "cross-fetch": "3.1.6", - "debug": "4.3.4", - "devtools-protocol": "0.0.1120988", - "ws": "8.13.0" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "devtools-protocol": { - "version": "0.0.1120988", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1120988.tgz", - "integrity": "sha512-39fCpE3Z78IaIPChJsP6Lhmkbf4dWXOmzLk/KFTdRkNk/0JymRIfUynDVRndV9HoDz8PyalK1UH21ST/ivwW5Q==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "query-selector-shadow-dom": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", - "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "read-pkg": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", - "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", - "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", - "dev": true, - "requires": { - "find-up": "^6.3.0", - "read-pkg": "^7.1.0", - "type-fest": "^2.5.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dev": true, - "requires": { - "minimatch": "^5.1.0" - }, - "dependencies": { - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dev": true, - "requires": { - "lowercase-keys": "^3.0.0" - } - }, - "resq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", - "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1" - } - }, - "rgb2hex": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", - "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "dev": true - }, - "spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true - }, - "ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", - "dev": true - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "webdriver": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz", - "integrity": "sha512-hSpUZYzUA65t4DDtKujCHUX6hpFTUleb7lWMcf5xjPz8sxWrK9R8NIw7pXt/GU6PVS331nGAaYkzoXrqz2VB8w==", - "dev": true, - "requires": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "8.11.0", - "@wdio/logger": "8.11.0", - "@wdio/protocols": "8.11.0", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", - "deepmerge-ts": "^5.0.0", - "got": "^ 12.6.1", - "ky": "^0.33.0", - "ws": "^8.8.0" - } - }, - "webdriverio": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.11.2.tgz", - "integrity": "sha512-e/9WkdNTfWeoaSo2UzK0Giec/nQX3i7U9J8esimhozH/EpwSqIaEJ2pRRlxRVafEhe2OBG1QDhnLnDjdCC5Hxg==", - "dev": true, - "requires": { - "@types/node": "^20.1.0", - "@wdio/config": "8.11.0", - "@wdio/logger": "8.11.0", - "@wdio/protocols": "8.11.0", - "@wdio/repl": "8.10.1", - "@wdio/types": "8.10.4", - "@wdio/utils": "8.11.0", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "8.11.0", - "devtools-protocol": "^0.0.1152884", - "grapheme-splitter": "^1.0.2", - "import-meta-resolve": "^3.0.0", - "is-plain-obj": "^4.1.0", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "minimatch": "^9.0.0", - "puppeteer-core": "20.3.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "8.11.1" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true - }, - "zip-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "dev": true, - "requires": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - } - } } } From 0edcfc01ba89bebb3387beb9a7d914c3b5f8f633 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:26:34 +0100 Subject: [PATCH 112/201] Update Appium capabilities --- appium-test/test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index 675be7e0..7cdc7186 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -6,7 +6,9 @@ const capabilities = { 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', - 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk` + 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, + 'autoGrantPermissions': true, + 'ignoreHiddenApiPolicyError': true }; const wdOpts = { From 8e3c2ae13a45190ba6d22768225868a76e252978 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:41:23 +0100 Subject: [PATCH 113/201] Use correct name for Appium capabilities --- appium-test/test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index 7cdc7186..3de0db63 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -7,8 +7,8 @@ const capabilities = { 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, - 'autoGrantPermissions': true, - 'ignoreHiddenApiPolicyError': true + 'appium:autoGrantPermissions': true, + 'appium:ignoreHiddenApiPolicyError': true }; const wdOpts = { From fb74178b03becda4f358b6fb58d2efbb1fc9dfb6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:45:48 +0100 Subject: [PATCH 114/201] Use Android API level 32 --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0ed109a8..68ca8bbc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -259,7 +259,7 @@ jobs: strategy: matrix: android-api: - - 33 + - 32 steps: - name: Checkout From 5d4cfc2095b78f1a826d2f79f2e8ad64752fc71b Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 21:50:17 +0100 Subject: [PATCH 115/201] Use fullReset capability --- appium-test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/appium-test/test.js b/appium-test/test.js index 3de0db63..384756ca 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -7,6 +7,7 @@ const capabilities = { 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, + 'appium:fullReset': true, 'appium:autoGrantPermissions': true, 'appium:ignoreHiddenApiPolicyError': true }; From 0d7f04b6c323d5eb6acdfa66ffc8e47f73381977 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 22:06:51 +0100 Subject: [PATCH 116/201] Start Chrome from adb and then remove debug hook --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 68ca8bbc..3ad0f781 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -297,6 +297,8 @@ jobs: adb shell pm clear com.google.android.apps.nexuslauncher adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main + adb shell am clear-debug-app adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From ba1823a8676f05596f288b1f45f518ebe153c8e1 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 22:41:17 +0100 Subject: [PATCH 117/201] Install Chrome driver --- .github/workflows/main.yml | 2 +- appium-test/test.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3ad0f781..49014a40 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -282,7 +282,7 @@ jobs: run: npm install - name: Set up Appium driver - run: APPIUM_SKIP_CHROMEDRIVER_INSTALL=1 npx --yes appium@next driver install uiautomator2 + run: npx --yes appium@next driver install uiautomator2 - name: Start Appium server run: npx --yes appium@next & # Appium recommends this until v2 is released diff --git a/appium-test/test.js b/appium-test/test.js index 384756ca..550bbc38 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -9,7 +9,11 @@ const capabilities = { 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, 'appium:fullReset': true, 'appium:autoGrantPermissions': true, - 'appium:ignoreHiddenApiPolicyError': true + 'appium:ignoreHiddenApiPolicyError': true, + browserName: 'Chrome', + chromeOptions: { + args: ['--no-first-run', '--disable-fre', '--no-default-browser-check'], + }, }; const wdOpts = { From 2f2c90e9b12a0f9ab7626b21a07a4a893d6927f0 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 22:55:11 +0100 Subject: [PATCH 118/201] Remove chrome options --- appium-test/test.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index 550bbc38..b99262b0 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -2,6 +2,7 @@ const { remote } = require('webdriverio'); const capabilities = { platformName: 'Android', + browserName: 'Chrome', 'appium:automationName': 'UiAutomator2', 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', @@ -10,10 +11,6 @@ const capabilities = { 'appium:fullReset': true, 'appium:autoGrantPermissions': true, 'appium:ignoreHiddenApiPolicyError': true, - browserName: 'Chrome', - chromeOptions: { - args: ['--no-first-run', '--disable-fre', '--no-default-browser-check'], - }, }; const wdOpts = { From e6aff38ced8508a4d3cb6603022c7c6c2ab753c6 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 22:55:59 +0100 Subject: [PATCH 119/201] Prefix browserName capability --- appium-test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index b99262b0..a857be71 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -2,7 +2,6 @@ const { remote } = require('webdriverio'); const capabilities = { platformName: 'Android', - browserName: 'Chrome', 'appium:automationName': 'UiAutomator2', 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', @@ -11,6 +10,7 @@ const capabilities = { 'appium:fullReset': true, 'appium:autoGrantPermissions': true, 'appium:ignoreHiddenApiPolicyError': true, + 'appium:browserName': 'Chrome' }; const wdOpts = { From 00d0715fcc7f272390ce6a602016512ed24ce24e Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 23:07:24 +0100 Subject: [PATCH 120/201] Use prefixed chromeOptions --- appium-test/test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index a857be71..90a0bb9a 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -10,7 +10,9 @@ const capabilities = { 'appium:fullReset': true, 'appium:autoGrantPermissions': true, 'appium:ignoreHiddenApiPolicyError': true, - 'appium:browserName': 'Chrome' + 'goog:chromeOptions': { + args: ['--no-first-run', '--no-default-browser-check'], + }, }; const wdOpts = { From 5eef9926c0315f65d322c399fe55105c09a9acb3 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 23:40:29 +0100 Subject: [PATCH 121/201] Skip Chrome FTE from the tests --- .github/workflows/main.yml | 4 ---- appium-test/test.js | 14 ++++++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 49014a40..ce7e1f05 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -295,10 +295,6 @@ jobs: arch: x86_64 script: | adb shell pm clear com.google.android.apps.nexuslauncher - adb shell am set-debug-app --persistent com.android.chrome - adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main - adb shell am clear-debug-app adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js diff --git a/appium-test/test.js b/appium-test/test.js index 90a0bb9a..68787bc7 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -9,10 +9,7 @@ const capabilities = { 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, 'appium:fullReset': true, 'appium:autoGrantPermissions': true, - 'appium:ignoreHiddenApiPolicyError': true, - 'goog:chromeOptions': { - args: ['--no-first-run', '--no-default-browser-check'], - }, + 'appium:ignoreHiddenApiPolicyError': true }; const wdOpts = { @@ -29,6 +26,15 @@ async function runTest() { const loginButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Login"]'); await loginButton.click(); + const chromeContinueButton = await driver.$('//android.widget.Button[@content-desc="Accept & continue"]'); + chromeContinueButton.waitForExist({ timeout: 5000 }) + .then(() => { + chromeContinueButton.click(); + }) + .catch(() => { + console.log('Not running from a clean state, skipping chromeContinueButton'); + }); + const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); await emailTextField.waitForExist(); await emailTextField.setValue(process.env.USER_EMAIL); From 42a5cf48469c849e8e2719a00441b1738526b64f Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Wed, 30 Aug 2023 23:42:16 +0100 Subject: [PATCH 122/201] Increase the timeout for the Chrome FTE button --- appium-test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index 68787bc7..74e75454 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -27,7 +27,7 @@ async function runTest() { await loginButton.click(); const chromeContinueButton = await driver.$('//android.widget.Button[@content-desc="Accept & continue"]'); - chromeContinueButton.waitForExist({ timeout: 5000 }) + chromeContinueButton.waitForExist({ timeout: 50000 }) .then(() => { chromeContinueButton.click(); }) From 57b0db9505bc051d55ba07d8061933535cc24efa Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 00:05:04 +0100 Subject: [PATCH 123/201] Use @text to find the Chrome FTE button --- appium-test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index 74e75454..9c145c33 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -26,7 +26,7 @@ async function runTest() { const loginButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Login"]'); await loginButton.click(); - const chromeContinueButton = await driver.$('//android.widget.Button[@content-desc="Accept & continue"]'); + const chromeContinueButton = await driver.$('//android.widget.Button[@text="Accept & continue"]'); chromeContinueButton.waitForExist({ timeout: 50000 }) .then(() => { chromeContinueButton.click(); From 577146551940dcc7759e18bebc668d91f1065532 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 00:37:40 +0100 Subject: [PATCH 124/201] Skip chrome sync button --- appium-test/test.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index 9c145c33..07580948 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -28,12 +28,10 @@ async function runTest() { const chromeContinueButton = await driver.$('//android.widget.Button[@text="Accept & continue"]'); chromeContinueButton.waitForExist({ timeout: 50000 }) - .then(() => { - chromeContinueButton.click(); - }) - .catch(() => { - console.log('Not running from a clean state, skipping chromeContinueButton'); - }); + .then(() => chromeContinueButton.click()) + .then(() => driver.$('//android.widget.Button[@text="No thanks"]')) + .then((chromeSyncButton) => chromeSyncButton.waitForExist().then(() => chromeSyncButton.click())) + .catch(() => console.log('Not running from a clean state, skipping Chrome setup')); const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); await emailTextField.waitForExist(); @@ -44,7 +42,7 @@ async function runTest() { const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); await continueButton.click(); - + const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); await logoutButton.click(); From d96143dbcc297e702521271cb3cb47e00bfd3f3a Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 01:17:59 +0100 Subject: [PATCH 125/201] Clear Chrome data before starting tests --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ce7e1f05..e36ac872 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -295,6 +295,7 @@ jobs: arch: x86_64 script: | adb shell pm clear com.google.android.apps.nexuslauncher + adb shell pm clear com.android.chrome adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From cf0910f3e9abdb02bec3d28cb76795fe79f7d8b0 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 01:18:22 +0100 Subject: [PATCH 126/201] Remove fullReset capability --- appium-test/test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index 07580948..fa87793d 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -7,7 +7,6 @@ const capabilities = { 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, - 'appium:fullReset': true, 'appium:autoGrantPermissions': true, 'appium:ignoreHiddenApiPolicyError': true }; From 81889a6e5c63f91ab87f5376b3e3b9850c348eb3 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 01:18:49 +0100 Subject: [PATCH 127/201] Remove autoGrantPermissions capability --- appium-test/test.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index fa87793d..baae76ec 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -6,9 +6,7 @@ const capabilities = { 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', - 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk`, - 'appium:autoGrantPermissions': true, - 'appium:ignoreHiddenApiPolicyError': true + 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk` }; const wdOpts = { From 3f7975c1aa39496d8e69f6f808d2e5a9d4e3d490 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 09:38:36 +0100 Subject: [PATCH 128/201] Use `Pixel` as the hardware profile --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e36ac872..21575e71 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,6 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 + profile: Pixel script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From 794b5e96eee9e5a6b02c7295e4fa4f6e0e9507a7 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 12:49:44 +0100 Subject: [PATCH 129/201] List AVD devices --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 21575e71..6e2a2813 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -248,7 +248,7 @@ jobs: test-android-smoke: name: Run native Android smoke tests using API-level ${{ matrix.android-api }} needs: authorize - runs-on: macos-latest-xl + runs-on: macos-latest environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} env: @@ -293,8 +293,8 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Pixel script: | + avdmanager list device adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome adb emu screenrecord start --time-limit 300 ./recording_video.webm From ccdbb987322c1afcdd01c0c0ac185bdcd6a61fbd Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 21:32:30 +0100 Subject: [PATCH 130/201] Use device ID as hardware profile --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6e2a2813..59c5dfaa 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -248,7 +248,7 @@ jobs: test-android-smoke: name: Run native Android smoke tests using API-level ${{ matrix.android-api }} needs: authorize - runs-on: macos-latest + runs-on: macos-latest-xl environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} env: @@ -293,8 +293,8 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 + profile: 16 script: | - avdmanager list device adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome adb emu screenrecord start --time-limit 300 ./recording_video.webm From fbf54343f337844be547e9a0feb26340a364fe3d Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 21:36:51 +0100 Subject: [PATCH 131/201] Use text ID for hardware profile --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 59c5dfaa..174868d3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: 16 + profile: pixel script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From e9a4f7418f0692b73646c6ae938a1045d70dcccf Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 22:11:22 +0100 Subject: [PATCH 132/201] Use Nexus S hardware profile --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 174868d3..ee235927 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: pixel + profile: Nexus S script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From e4fe8f1abfdf3b5cc6ea3995294915325bbe8df2 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 31 Aug 2023 22:21:14 +0100 Subject: [PATCH 133/201] Replace log in button press with an enter --- appium-test/test.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index baae76ec..ecbbd4bf 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -35,10 +35,7 @@ async function runTest() { await emailTextField.setValue(process.env.USER_EMAIL); const passwordTextField = await driver.$("//android.widget.EditText[@hint='Password your password']"); - await passwordTextField.setValue(process.env.USER_PASSWORD); - - const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); - await continueButton.click(); + await passwordTextField.setValue(`${process.env.USER_PASSWORD}\n`); const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); From 31098e1b5fcc706fe1179b909b6ad9f48ca2dbb7 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 15:42:54 +0530 Subject: [PATCH 134/201] Fix android integration tests --- .github/workflows/main.yml | 7 +++++-- appium-test/test.js | 14 ++++---------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ee235927..a52437e0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -295,8 +295,11 @@ jobs: arch: x86_64 profile: Nexus S script: | - adb shell pm clear com.google.android.apps.nexuslauncher - adb shell pm clear com.android.chrome + adb shell settings put global window_animation_scale 0.0 + adb shell settings put global transition_animation_scale 0.0 + adb shell settings put global animator_duration_scale 0.0 + adb shell am set-debug-app --persistent com.android.chrome + adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js diff --git a/appium-test/test.js b/appium-test/test.js index ecbbd4bf..e7d7a24b 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -23,25 +23,19 @@ async function runTest() { const loginButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Login"]'); await loginButton.click(); - const chromeContinueButton = await driver.$('//android.widget.Button[@text="Accept & continue"]'); - chromeContinueButton.waitForExist({ timeout: 50000 }) - .then(() => chromeContinueButton.click()) - .then(() => driver.$('//android.widget.Button[@text="No thanks"]')) - .then((chromeSyncButton) => chromeSyncButton.waitForExist().then(() => chromeSyncButton.click())) - .catch(() => console.log('Not running from a clean state, skipping Chrome setup')); - const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); await emailTextField.waitForExist(); await emailTextField.setValue(process.env.USER_EMAIL); const passwordTextField = await driver.$("//android.widget.EditText[@hint='Password your password']"); - await passwordTextField.setValue(`${process.env.USER_PASSWORD}\n`); + await passwordTextField.setValue(process.env.USER_PASSWORD); + const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); + await continueButton.click(); + const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); await logoutButton.click(); - - await loginButton.waitForExist(); } finally { await driver.pause(1000); await driver.deleteSession(); From 8c5e73a0b3f9901aeb19e3c14d5bd52d484932fe Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 15:43:06 +0530 Subject: [PATCH 135/201] remove jobs to make run faster --- .github/workflows/main.yml | 456 ++++++++++++++++++------------------- 1 file changed, 228 insertions(+), 228 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a52437e0..02c47516 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,235 +15,235 @@ jobs: steps: - run: true - analyze-auth0_flutter: - name: Analyze auth0_flutter Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Add example/.env - working-directory: auth0_flutter - run: cp example/.env.example example/.env - - - name: Analize auth0_flutter package - working-directory: auth0_flutter - run: flutter analyze + # analyze-auth0_flutter: + # name: Analyze auth0_flutter Flutter package + # needs: authorize + # runs-on: ubuntu-latest + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true + + # - name: Add example/.env + # working-directory: auth0_flutter + # run: cp example/.env.example example/.env + + # - name: Analize auth0_flutter package + # working-directory: auth0_flutter + # run: flutter analyze - analyze-auth0_flutter_platform_interface: - name: Analyze auth0_flutter_platform_interface Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Analize auth0_flutter_platform_interface package - working-directory: auth0_flutter_platform_interface - run: flutter analyze - - test-auth0_flutter: - name: Test auth0_flutter Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Add example/.env - working-directory: auth0_flutter - run: cp example/.env.example example/.env - - - name: Test auth0_flutter package - working-directory: auth0_flutter - run: | - flutter test --tags browser --platform chrome - flutter test --coverage --exclude-tags browser - - - name: Upload coverage report for auth0_flutter - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - name: Auth0 Flutter - flags: auth0_flutter - files: ./auth0_flutter/coverage/lcov.info - - test-auth0_flutter_platform_interface: - name: Test auth0_flutter_platform_interface Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Test auth0_flutter_platform_interface package - working-directory: auth0_flutter_platform_interface - run: flutter test --coverage - - - name: Upload coverage report for auth0_flutter_platform_interface - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - name: Auth0 Flutter - flags: auth0_flutter_platform_interface - files: ./auth0_flutter_platform_interface/coverage/lcov.info - - test-ios-unit: - name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} - needs: authorize - runs-on: macos-latest - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - env: - USER_EMAIL: ${{ secrets.USER_EMAIL }} - USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - - strategy: - matrix: - xcode: - - '14.2' - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Set up environment - uses: ./.github/actions/setup-ios - with: - flutter: ${{ env.flutter }} - xcode: ${{ matrix.xcode }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - - name: Run iOS unit tests - working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests - - - name: Convert coverage report - working-directory: auth0_flutter/example/ios - run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj - - - name: Upload coverage report - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - directory: auth0_flutter/example/ios/cobertura - - - name: Upload xcresult bundles - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: xcresult bundles - path: 'auth0_flutter/example/ios/*.xcresult' - - test-ios-smoke: - name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} - needs: authorize - runs-on: macos-latest - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - env: - USER_EMAIL: ${{ secrets.USER_EMAIL }} - USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - - strategy: - matrix: - xcode: - - '14.2' - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Set up environment - uses: ./.github/actions/setup-ios - with: - flutter: ${{ env.flutter }} - xcode: ${{ matrix.xcode }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - - name: Run iOS smoke tests - if: ${{ github.event.pull_request.head.repo.fork == false }} - working-directory: auth0_flutter/example/ios - run: | - defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 - xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - - - name: Upload xcresult bundles - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: 'iOS - xcresult bundles' - path: 'auth0_flutter/example/ios/*.xcresult' - - test-android-unit: - name: Run native Android unit tests - needs: authorize - runs-on: ubuntu-latest - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Set up environment - uses: ./.github/actions/setup-android - with: - flutter: ${{ env.flutter }} - java: ${{ env.java }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - - name: Build Android example app - working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi - - - name: Run Android unit tests - working-directory: auth0_flutter/example/android - run: ./gradlew testDebugUnitTest createDebugCoverageReport - - - name: Upload coverage report - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected - - - name: Upload test results - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: Test results - path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' + # analyze-auth0_flutter_platform_interface: + # name: Analyze auth0_flutter_platform_interface Flutter package + # needs: authorize + # runs-on: ubuntu-latest + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true + + # - name: Analize auth0_flutter_platform_interface package + # working-directory: auth0_flutter_platform_interface + # run: flutter analyze + + # test-auth0_flutter: + # name: Test auth0_flutter Flutter package + # needs: authorize + # runs-on: ubuntu-latest + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true + + # - name: Add example/.env + # working-directory: auth0_flutter + # run: cp example/.env.example example/.env + + # - name: Test auth0_flutter package + # working-directory: auth0_flutter + # run: | + # flutter test --tags browser --platform chrome + # flutter test --coverage --exclude-tags browser + + # - name: Upload coverage report for auth0_flutter + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # name: Auth0 Flutter + # flags: auth0_flutter + # files: ./auth0_flutter/coverage/lcov.info + + # test-auth0_flutter_platform_interface: + # name: Test auth0_flutter_platform_interface Flutter package + # needs: authorize + # runs-on: ubuntu-latest + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true + + # - name: Test auth0_flutter_platform_interface package + # working-directory: auth0_flutter_platform_interface + # run: flutter test --coverage + + # - name: Upload coverage report for auth0_flutter_platform_interface + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # name: Auth0 Flutter + # flags: auth0_flutter_platform_interface + # files: ./auth0_flutter_platform_interface/coverage/lcov.info + + # test-ios-unit: + # name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} + # needs: authorize + # runs-on: macos-latest + # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + # env: + # USER_EMAIL: ${{ secrets.USER_EMAIL }} + # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + + # strategy: + # matrix: + # xcode: + # - '14.2' + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Set up environment + # uses: ./.github/actions/setup-ios + # with: + # flutter: ${{ env.flutter }} + # xcode: ${{ matrix.xcode }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + # - name: Run iOS unit tests + # working-directory: auth0_flutter/example/ios + # run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests + + # - name: Convert coverage report + # working-directory: auth0_flutter/example/ios + # run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj + + # - name: Upload coverage report + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # directory: auth0_flutter/example/ios/cobertura + + # - name: Upload xcresult bundles + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: xcresult bundles + # path: 'auth0_flutter/example/ios/*.xcresult' + + # test-ios-smoke: + # name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} + # needs: authorize + # runs-on: macos-latest + # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + # env: + # USER_EMAIL: ${{ secrets.USER_EMAIL }} + # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + + # strategy: + # matrix: + # xcode: + # - '14.2' + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Set up environment + # uses: ./.github/actions/setup-ios + # with: + # flutter: ${{ env.flutter }} + # xcode: ${{ matrix.xcode }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + # - name: Run iOS smoke tests + # if: ${{ github.event.pull_request.head.repo.fork == false }} + # working-directory: auth0_flutter/example/ios + # run: | + # defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 + # xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + + # - name: Upload xcresult bundles + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: 'iOS - xcresult bundles' + # path: 'auth0_flutter/example/ios/*.xcresult' + + # test-android-unit: + # name: Run native Android unit tests + # needs: authorize + # runs-on: ubuntu-latest + # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Set up environment + # uses: ./.github/actions/setup-android + # with: + # flutter: ${{ env.flutter }} + # java: ${{ env.java }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + # - name: Build Android example app + # working-directory: auth0_flutter/example + # run: flutter build apk --split-per-abi + + # - name: Run Android unit tests + # working-directory: auth0_flutter/example/android + # run: ./gradlew testDebugUnitTest createDebugCoverageReport + + # - name: Upload coverage report + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected + + # - name: Upload test results + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: Test results + # path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' test-android-smoke: name: Run native Android smoke tests using API-level ${{ matrix.android-api }} From 891c4bc96486f0a073ee68dd0eea08413e23207f Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 16:55:48 +0530 Subject: [PATCH 136/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 02c47516..520c63e2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Nexus S + profile: Pixel 7 Pro script: | adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 From 90686e8298273467c7c3b4a307e4e8fdbbf362d8 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 17:17:46 +0530 Subject: [PATCH 137/201] Update main.yml --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 520c63e2..8a0ba066 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,8 +293,9 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Pixel 7 Pro + profile: Nexus S script: | + avdmanager list device adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 adb shell settings put global animator_duration_scale 0.0 From 9447ab40d0200f7025bd511bcb0c9392ea475ab6 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 17:28:28 +0530 Subject: [PATCH 138/201] Update main.yml --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8a0ba066..a36d2bf6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,9 +293,8 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Nexus S + profile: Pixel 6 Pro script: | - avdmanager list device adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 adb shell settings put global animator_duration_scale 0.0 From 0404afcedcc0f1e27f6aac21c130dbd1af726279 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 17:36:20 +0530 Subject: [PATCH 139/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a36d2bf6..32829b3d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Pixel 6 Pro + profile: pixel_6_pro script: | adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 From fe4bc78a0af3a77d0c95e11c067ce7bf36ea586a Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 18:17:49 +0530 Subject: [PATCH 140/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 32829b3d..88edde39 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: pixel_6_pro + profile: pixel_6 script: | adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 From 20b40854d3e68f8abc5c5e53e68a295d53a22f22 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 18:25:07 +0530 Subject: [PATCH 141/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 88edde39..bb58e1c5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: pixel_6 + profile: Nexus 6P script: | adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 From c35e3b1d85ef0593fc2786420267b595f207e2a6 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 18:25:29 +0530 Subject: [PATCH 142/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bb58e1c5..1f2da1dd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Nexus 6P + profile: Nexus 7 script: | adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 From 61aa59c1ac740cc95ace415435a31729e40fa2af Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 18:25:38 +0530 Subject: [PATCH 143/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1f2da1dd..00c738cd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Nexus 7 + profile: Nexus 9 script: | adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 From 7d82bfd5285a738a3050a60da1bf2552df7042c2 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 18:58:57 +0530 Subject: [PATCH 144/201] Update main.yml --- .github/workflows/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 00c738cd..c17e976c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,8 +293,10 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Nexus 9 + profile: Nexus 6P script: | + adb shell pm clear com.google.android.apps.nexuslauncher + adb shell pm clear com.android.chrome adb shell settings put global window_animation_scale 0.0 adb shell settings put global transition_animation_scale 0.0 adb shell settings put global animator_duration_scale 0.0 From af1342726306e38124c41d6ba825ca1d8cace0e9 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 19:49:22 +0530 Subject: [PATCH 145/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c17e976c..5bc03204 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,7 +293,7 @@ jobs: api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 - profile: Nexus 6P + profile: 5.4in FWVGA script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From c04837499b62bd94a4a18d6df0f64ffa927dbfe5 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 19:55:03 +0530 Subject: [PATCH 146/201] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5bc03204..2253f64e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -294,6 +294,7 @@ jobs: target: playstore arch: x86_64 profile: 5.4in FWVGA + cores: 2 script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From 4664fbe5f333dd3e425cc31658a1bd291703872b Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 20:33:55 +0530 Subject: [PATCH 147/201] Update main.yml --- .github/workflows/main.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2253f64e..bb97469b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -294,7 +294,6 @@ jobs: target: playstore arch: x86_64 profile: 5.4in FWVGA - cores: 2 script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome @@ -303,12 +302,4 @@ jobs: adb shell settings put global animator_duration_scale 0.0 adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - - - name: Upload recording - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: 'Android - smoke tests recording' - path: recording_video.webm From b976720cc39b84bfaeec97fd51e590b151da665b Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 23:44:10 +0530 Subject: [PATCH 148/201] Update main.yml --- .github/workflows/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bb97469b..5bc03204 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -302,4 +302,12 @@ jobs: adb shell settings put global animator_duration_scale 0.0 adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js + + - name: Upload recording + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android - smoke tests recording' + path: recording_video.webm From 1f8859765ea3c03eb28747c957af6c5e106071e5 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Tue, 12 Sep 2023 23:53:19 +0530 Subject: [PATCH 149/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5bc03204..1911e209 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -259,7 +259,7 @@ jobs: strategy: matrix: android-api: - - 32 + - 33 steps: - name: Checkout From fa2ea849dee1321beaf3f962e60325799ba3991f Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Wed, 13 Sep 2023 12:43:34 +0530 Subject: [PATCH 150/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1911e209..5bc03204 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -259,7 +259,7 @@ jobs: strategy: matrix: android-api: - - 33 + - 32 steps: - name: Checkout From 31fc3e3932b0403d67dffcaa3bc5a4906feab590 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Wed, 13 Sep 2023 17:05:05 +0530 Subject: [PATCH 151/201] Update main.yml --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5bc03204..d456e59b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -294,6 +294,8 @@ jobs: target: playstore arch: x86_64 profile: 5.4in FWVGA + ram-size: 4096M + heap-size: 2048M script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From 27ce38f09758f8c9396742550ba24fcf053eb4c1 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Wed, 13 Sep 2023 17:07:30 +0530 Subject: [PATCH 152/201] Update main.yml --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d456e59b..90437a4b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -294,8 +294,8 @@ jobs: target: playstore arch: x86_64 profile: 5.4in FWVGA - ram-size: 4096M - heap-size: 2048M + ram-size: 10240M + heap-size: 4096M script: | adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome From cd5fa5a6f47d90719f31d114220c7754eaf0e535 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Wed, 13 Sep 2023 17:40:13 +0530 Subject: [PATCH 153/201] Update test.js --- appium-test/test.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/appium-test/test.js b/appium-test/test.js index e7d7a24b..2888c5ea 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -6,6 +6,7 @@ const capabilities = { 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', + // 'appium:app': `/Users/poovamrajthanganadarthiagarajan/repositories/auth0-flutter/auth0_flutter/example/build/app/outputs/flutter-apk/app-release.apk` 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk` }; @@ -23,14 +24,17 @@ async function runTest() { const loginButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Login"]'); await loginButton.click(); - const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); + // const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); + const emailTextField = await driver.$("//android.widget.EditText[@resource-id='username']"); await emailTextField.waitForExist(); await emailTextField.setValue(process.env.USER_EMAIL); - const passwordTextField = await driver.$("//android.widget.EditText[@hint='Password your password']"); + // const passwordTextField = await driver.$("//android.widget.EditText[@hint='Password your password']"); + const passwordTextField = await driver.$("//android.widget.EditText[@resource-id='password']"); await passwordTextField.setValue(process.env.USER_PASSWORD); - const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); + // const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); + const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); await continueButton.click(); const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); From 863f431e795fbf4d00224bebe97ae323a307a1ca Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 14:08:20 +0530 Subject: [PATCH 154/201] Update main.yml --- .github/workflows/main.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 90437a4b..2e3f7449 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -297,12 +297,7 @@ jobs: ram-size: 10240M heap-size: 4096M script: | - adb shell pm clear com.google.android.apps.nexuslauncher adb shell pm clear com.android.chrome - adb shell settings put global window_animation_scale 0.0 - adb shell settings put global transition_animation_scale 0.0 - adb shell settings put global animator_duration_scale 0.0 - adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From 37750241704a1d2af386ba45b5aa8b282aa0cbd3 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 14:43:07 +0530 Subject: [PATCH 155/201] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2e3f7449..607f2ba3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -298,6 +298,7 @@ jobs: heap-size: 4096M script: | adb shell pm clear com.android.chrome + adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js From c11bba775901fe26fc773feb23dd4ffbbf740900 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 15:27:31 +0530 Subject: [PATCH 156/201] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 607f2ba3..159ce1d3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -301,6 +301,7 @@ jobs: adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm + adb shell settings put system show_touches 1 USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - name: Upload recording From d9cb6b7e9b14e1341ec6986ae6023b395c097aff Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 15:29:32 +0530 Subject: [PATCH 157/201] Update test.js --- appium-test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/appium-test/test.js b/appium-test/test.js index 2888c5ea..aa704685 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -36,6 +36,7 @@ async function runTest() { // const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); await continueButton.click(); + await driver.pressKeyCode(66) const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); From dde60a9b8d383797dde5e00279f52fa299b212b2 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 16:57:28 +0530 Subject: [PATCH 158/201] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 159ce1d3..56f3f887 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -294,6 +294,7 @@ jobs: target: playstore arch: x86_64 profile: 5.4in FWVGA + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none ram-size: 10240M heap-size: 4096M script: | From 208dbe33054fa445ddcf32c799b7df0b093129a3 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 16:57:46 +0530 Subject: [PATCH 159/201] Update main.yml --- .github/workflows/main.yml | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 56f3f887..e459c7c4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -265,6 +265,18 @@ jobs: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + - name: Gradle cache + uses: gradle/gradle-build-action@v2 + + - name: AVD cache + uses: actions/cache@v3 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ matrix.api-level }} + - name: Set up environment uses: ./.github/actions/setup-android with: @@ -287,16 +299,26 @@ jobs: - name: Start Appium server run: npx --yes appium@next & # Appium recommends this until v2 is released + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ matrix.api-level }} + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: false + script: echo "Generated AVD snapshot for caching." + - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: ${{ matrix.android-api }} + api-level: ${{ matrix.api-level }} target: playstore arch: x86_64 profile: 5.4in FWVGA + force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - ram-size: 10240M - heap-size: 4096M + disable-animations: true script: | adb shell pm clear com.android.chrome adb shell am set-debug-app --persistent com.android.chrome From 42c0f2fbc187116cdb96cb1b6c89ae064bce2cd2 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 16:59:29 +0530 Subject: [PATCH 160/201] Update main.yml --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e459c7c4..7c6664f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -316,6 +316,8 @@ jobs: target: playstore arch: x86_64 profile: 5.4in FWVGA + ram-size: 10240M + heap-size: 4096M force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true From 4d2c5e308d55d2dd38f328cf4f33c7277a2441a9 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 17:12:50 +0530 Subject: [PATCH 161/201] Update main.yml --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7c6664f4..333148d5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -275,7 +275,7 @@ jobs: path: | ~/.android/avd/* ~/.android/adb* - key: avd-${{ matrix.api-level }} + key: avd-${{ matrix.android-api }} - name: Set up environment uses: ./.github/actions/setup-android @@ -303,7 +303,7 @@ jobs: if: steps.avd-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@v2 with: - api-level: ${{ matrix.api-level }} + api-level: ${{ matrix.android-api }} force-avd-creation: false emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: false @@ -312,7 +312,7 @@ jobs: - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: ${{ matrix.api-level }} + api-level: ${{ matrix.android-api }} target: playstore arch: x86_64 profile: 5.4in FWVGA From fd2108b047c0a01ac83af7cb03ece76ba35b94fc Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 17:49:29 +0530 Subject: [PATCH 162/201] Update main.yml --- .github/workflows/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 333148d5..a621caa1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -313,9 +313,6 @@ jobs: uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.android-api }} - target: playstore - arch: x86_64 - profile: 5.4in FWVGA ram-size: 10240M heap-size: 4096M force-avd-creation: false From 8a5fd1ea18d4e77e01cf52f401b11a0a5a59ae30 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 17:49:38 +0530 Subject: [PATCH 163/201] Update main.yml --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a621caa1..2ffaa0f5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -312,7 +312,6 @@ jobs: - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: - api-level: ${{ matrix.android-api }} ram-size: 10240M heap-size: 4096M force-avd-creation: false From d0e40b6defd08ec44e8f2a63f21030fc4e90a2f3 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 17:55:46 +0530 Subject: [PATCH 164/201] Update main.yml --- .github/workflows/main.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2ffaa0f5..60407fbd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -304,6 +304,9 @@ jobs: uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA force-avd-creation: false emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: false @@ -312,6 +315,10 @@ jobs: - name: Run Appium tests uses: reactivecircus/android-emulator-runner@v2 with: + api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA ram-size: 10240M heap-size: 4096M force-avd-creation: false From 303c90b759790e0fc26f489131bc749486135a35 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:22:28 +0530 Subject: [PATCH 165/201] Update tests --- .github/workflows/main.yml | 2 +- appium-test/test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 60407fbd..80ddf844 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -329,7 +329,7 @@ jobs: adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm - adb shell settings put system show_touches 1 + adb shell settings put system pointer_location 1 USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - name: Upload recording diff --git a/appium-test/test.js b/appium-test/test.js index aa704685..5f9beab2 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -14,7 +14,7 @@ const wdOpts = { host: process.env.APPIUM_HOST || 'localhost', port: parseInt(process.env.APPIUM_PORT, 10) || 4723, logLevel: 'info', - waitforTimeout: 500000, + waitforTimeout: 100000, capabilities, }; From 27e61836bca22960e860f43e0e30237942c3b8d5 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:38:24 +0530 Subject: [PATCH 166/201] Update main.yml --- .github/workflows/main.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 80ddf844..a17e4283 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -338,3 +338,10 @@ jobs: with: name: 'Android - smoke tests recording' path: recording_video.webm + + - name: Upload APK + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android - APK' + path: ./auth0-flutter/auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk From f30f7fd9e5e0cba8e961a6cd7fbf94809418daf9 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:38:58 +0530 Subject: [PATCH 167/201] Update test.js --- appium-test/test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index 5f9beab2..09a5ddc2 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -36,7 +36,6 @@ async function runTest() { // const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); await continueButton.click(); - await driver.pressKeyCode(66) const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); From 57bb1d8b82223b34ba10193feeaef4160ac65ead Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:39:25 +0530 Subject: [PATCH 168/201] Update test.js --- appium-test/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/appium-test/test.js b/appium-test/test.js index 09a5ddc2..e6cbf842 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -36,6 +36,7 @@ async function runTest() { // const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); await continueButton.click(); + await driver.longPressKeyCode(66) const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); From d0f0d148bf279f2a37a2b51c704fc67b7fa8f83e Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:41:26 +0530 Subject: [PATCH 169/201] Update test.js --- appium-test/test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index e6cbf842..09a5ddc2 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -36,7 +36,6 @@ async function runTest() { // const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); await continueButton.click(); - await driver.longPressKeyCode(66) const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); await logoutButton.waitForExist(); From 4f329406c61ca7f28f9d1ec2551d074790ec4667 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:57:00 +0530 Subject: [PATCH 170/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a17e4283..7a981a46 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -344,4 +344,4 @@ jobs: if: ${{ failure() }} with: name: 'Android - APK' - path: ./auth0-flutter/auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk + path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk From 1503e045e76d61ba1c6081c6895ebac392708e44 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 18:58:32 +0530 Subject: [PATCH 171/201] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7a981a46..d4a3914c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -330,6 +330,7 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 + ls USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - name: Upload recording From 2bce0e85027365f2224ecb5273587cfa329de153 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 19:19:41 +0530 Subject: [PATCH 172/201] Update main.yml --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d4a3914c..5582f112 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -330,7 +330,6 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 - ls USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - name: Upload recording @@ -345,4 +344,4 @@ jobs: if: ${{ failure() }} with: name: 'Android - APK' - path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk + path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk From b1b446382965d875df1bca06100d800fa6cd8c54 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 19:44:52 +0530 Subject: [PATCH 173/201] Update main.yml --- .github/workflows/main.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5582f112..291dd400 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -287,7 +287,14 @@ jobs: - name: Build Android example app working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi + script: | + cp .env.example .env + sed -i "s/YOUR_AUTH0_DOMAIN/$AUTH0_DOMAIN/" .env + sed -i "s/YOUR_AUTH0_CLIENT_ID/$AUTH0_CLIENT_ID/" .env + sed -i "s/YOUR_AUTH0_CUSTOM_SCHEME/$AUTH0_CUSTOM_SCHEME/" .env + mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml + sed -i "s/YOUR_AUTH0_DOMAIN/$AUTH0_DOMAIN/" android/app/src/main/res/values/strings.xml + flutter build apk --split-per-abi - name: Set up Appium tests working-directory: appium-test From 6ecc10403e8da3fe2d2ef4b2b16e9f53e7ea19b4 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 19:55:13 +0530 Subject: [PATCH 174/201] hardcode values to test ci --- .github/workflows/main.yml | 9 +-------- auth0_flutter/example/android/app/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 291dd400..e6cdb7cb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -287,14 +287,7 @@ jobs: - name: Build Android example app working-directory: auth0_flutter/example - script: | - cp .env.example .env - sed -i "s/YOUR_AUTH0_DOMAIN/$AUTH0_DOMAIN/" .env - sed -i "s/YOUR_AUTH0_CLIENT_ID/$AUTH0_CLIENT_ID/" .env - sed -i "s/YOUR_AUTH0_CUSTOM_SCHEME/$AUTH0_CUSTOM_SCHEME/" .env - mv android/app/src/main/res/values/strings.xml.example android/app/src/main/res/values/strings.xml - sed -i "s/YOUR_AUTH0_DOMAIN/$AUTH0_DOMAIN/" android/app/src/main/res/values/strings.xml - flutter build apk --split-per-abi + script: flutter build apk --split-per-abi - name: Set up Appium tests working-directory: appium-test diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index e8aa7cf9..9f35c1e2 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -55,8 +55,8 @@ android { versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - manifestPlaceholders = [auth0Domain: "$System.env.AUTH0_DOMAIN", - auth0Scheme: "$System.env.AUTH0_CUSTOM_SCHEME"] + manifestPlaceholders = [auth0Domain: "brucke.auth0.com", + auth0Scheme: "demo"] testOptions { unitTests.all { From 9f7376eaa90f3181c69f125d5d9b4f560be2c1db Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 20:03:29 +0530 Subject: [PATCH 175/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e6cdb7cb..5582f112 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -287,7 +287,7 @@ jobs: - name: Build Android example app working-directory: auth0_flutter/example - script: flutter build apk --split-per-abi + run: flutter build apk --split-per-abi - name: Set up Appium tests working-directory: appium-test From cbbcaf7462b87159e44ae5237fcab17d874692b1 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 20:28:52 +0530 Subject: [PATCH 176/201] Update example_app.dart --- auth0_flutter/example/lib/example_app.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth0_flutter/example/lib/example_app.dart b/auth0_flutter/example/lib/example_app.dart index a6805791..36c7676b 100644 --- a/auth0_flutter/example/lib/example_app.dart +++ b/auth0_flutter/example/lib/example_app.dart @@ -31,7 +31,7 @@ class _ExampleAppState extends State { auth0Web = Auth0Web(dotenv.env['AUTH0_DOMAIN']!, dotenv.env['AUTH0_CLIENT_ID']!); webAuth = - auth0.webAuthentication(scheme: dotenv.env['AUTH0_CUSTOM_SCHEME']); + auth0.webAuthentication(scheme: 'demo'); if (kIsWeb) { auth0Web.onLoad().then((final credentials) => setState(() { From 51cbd4508df13fd4a53f8472823152c6bcc8edf1 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 20:57:06 +0530 Subject: [PATCH 177/201] Update proper domain --- auth0_flutter/example/android/app/build.gradle | 2 +- auth0_flutter/example/lib/example_app.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index 9f35c1e2..41052d64 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -55,7 +55,7 @@ android { versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - manifestPlaceholders = [auth0Domain: "brucke.auth0.com", + manifestPlaceholders = [auth0Domain: "poovamraj.eu.auth0.com", auth0Scheme: "demo"] testOptions { diff --git a/auth0_flutter/example/lib/example_app.dart b/auth0_flutter/example/lib/example_app.dart index 36c7676b..a6805791 100644 --- a/auth0_flutter/example/lib/example_app.dart +++ b/auth0_flutter/example/lib/example_app.dart @@ -31,7 +31,7 @@ class _ExampleAppState extends State { auth0Web = Auth0Web(dotenv.env['AUTH0_DOMAIN']!, dotenv.env['AUTH0_CLIENT_ID']!); webAuth = - auth0.webAuthentication(scheme: 'demo'); + auth0.webAuthentication(scheme: dotenv.env['AUTH0_CUSTOM_SCHEME']); if (kIsWeb) { auth0Web.onLoad().then((final credentials) => setState(() { From a2c30b7b56851d35993573440afb31e42bc0f55b Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 22:09:58 +0530 Subject: [PATCH 178/201] Trigger Build From d0a994dda8dd60e5d1c7d526058890a0a6168e91 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 22:58:40 +0530 Subject: [PATCH 179/201] Update to fix build --- .github/workflows/main.yml | 4 ++++ appium-test/test.js | 13 ++++++------- auth0_flutter/example/android/app/build.gradle | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5582f112..ecf8fc84 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -288,6 +288,10 @@ jobs: - name: Build Android example app working-directory: auth0_flutter/example run: flutter build apk --split-per-abi + env: + AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} + USER_EMAIL: ${{ vars.USER_EMAIL }} + USER_PASSWORD: ${{ vars.USER_PASSWORD }} - name: Set up Appium tests working-directory: appium-test diff --git a/appium-test/test.js b/appium-test/test.js index 09a5ddc2..b91c4495 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -6,7 +6,6 @@ const capabilities = { 'appium:deviceName': 'Android', 'appium:appPackage': 'com.auth0.auth0_flutter_example', 'appium:appActivity': '.MainActivity', - // 'appium:app': `/Users/poovamrajthanganadarthiagarajan/repositories/auth0-flutter/auth0_flutter/example/build/app/outputs/flutter-apk/app-release.apk` 'appium:app': `${__dirname}/../auth0_flutter/example/build/app/outputs/flutter-apk/app-x86_64-release.apk` }; @@ -24,17 +23,17 @@ async function runTest() { const loginButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Login"]'); await loginButton.click(); - // const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); - const emailTextField = await driver.$("//android.widget.EditText[@resource-id='username']"); + const emailTextField = await driver.$("//android.widget.EditText[@hint='User name username/email']"); + // const emailTextField = await driver.$("//android.widget.EditText[@resource-id='username']"); //For new universal login await emailTextField.waitForExist(); await emailTextField.setValue(process.env.USER_EMAIL); - // const passwordTextField = await driver.$("//android.widget.EditText[@hint='Password your password']"); - const passwordTextField = await driver.$("//android.widget.EditText[@resource-id='password']"); + const passwordTextField = await driver.$("//android.widget.EditText[@hint='Password your password']"); + // const passwordTextField = await driver.$("//android.widget.EditText[@resource-id='password']"); //For new universal login await passwordTextField.setValue(process.env.USER_PASSWORD); - // const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); - const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); + const continueButton = await driver.$("//android.widget.Button[@text='Log In']"); + // const continueButton = await driver.$("//android.widget.Button[@text='Continue']"); //For new universal login await continueButton.click(); const logoutButton = await driver.$('//android.widget.Button[@content-desc="Web Auth Logout"]'); diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index 41052d64..99726185 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -55,7 +55,7 @@ android { versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - manifestPlaceholders = [auth0Domain: "poovamraj.eu.auth0.com", + manifestPlaceholders = [auth0Domain: "$System.env.AUTH0_DOMAIN", auth0Scheme: "demo"] testOptions { From 6bfb22464a8c65fc75173ba4bd9532bbd3ac0ca2 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 23:08:42 +0530 Subject: [PATCH 180/201] Check APK alone --- .github/workflows/main.yml | 99 +++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 50 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecf8fc84..0febf9f2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,59 +293,58 @@ jobs: USER_EMAIL: ${{ vars.USER_EMAIL }} USER_PASSWORD: ${{ vars.USER_PASSWORD }} - - name: Set up Appium tests - working-directory: appium-test - run: npm install - - - name: Set up Appium driver - run: npx --yes appium@next driver install uiautomator2 - - - name: Start Appium server - run: npx --yes appium@next & # Appium recommends this until v2 is released - - - name: Create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.android-api }} - target: playstore - arch: x86_64 - profile: 5.4in FWVGA - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: false - script: echo "Generated AVD snapshot for caching." - - - name: Run Appium tests - uses: reactivecircus/android-emulator-runner@v2 - with: - api-level: ${{ matrix.android-api }} - target: playstore - arch: x86_64 - profile: 5.4in FWVGA - ram-size: 10240M - heap-size: 4096M - force-avd-creation: false - emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - script: | - adb shell pm clear com.android.chrome - adb shell am set-debug-app --persistent com.android.chrome - adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - adb emu screenrecord start --time-limit 300 ./recording_video.webm - adb shell settings put system pointer_location 1 - USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - - - name: Upload recording - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: 'Android - smoke tests recording' - path: recording_video.webm + # - name: Set up Appium tests + # working-directory: appium-test + # run: npm install + + # - name: Set up Appium driver + # run: npx --yes appium@next driver install uiautomator2 + + # - name: Start Appium server + # run: npx --yes appium@next & # Appium recommends this until v2 is released + + # - name: Create AVD and generate snapshot for caching + # if: steps.avd-cache.outputs.cache-hit != 'true' + # uses: reactivecircus/android-emulator-runner@v2 + # with: + # api-level: ${{ matrix.android-api }} + # target: playstore + # arch: x86_64 + # profile: 5.4in FWVGA + # force-avd-creation: false + # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # disable-animations: false + # script: echo "Generated AVD snapshot for caching." + + # - name: Run Appium tests + # uses: reactivecircus/android-emulator-runner@v2 + # with: + # api-level: ${{ matrix.android-api }} + # target: playstore + # arch: x86_64 + # profile: 5.4in FWVGA + # ram-size: 10240M + # heap-size: 4096M + # force-avd-creation: false + # emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # disable-animations: true + # script: | + # adb shell pm clear com.android.chrome + # adb shell am set-debug-app --persistent com.android.chrome + # adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + # adb emu screenrecord start --time-limit 300 ./recording_video.webm + # adb shell settings put system pointer_location 1 + # USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js + + # - name: Upload recording + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: 'Android - smoke tests recording' + # path: recording_video.webm - name: Upload APK uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} with: name: 'Android - APK' path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk From 0939b3d07536f47bd32385f83f2253405a4fe518 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Thu, 14 Sep 2023 23:16:44 +0530 Subject: [PATCH 181/201] Update main.yml --- .github/workflows/main.yml | 99 +++++++++++++++++++------------------- 1 file changed, 50 insertions(+), 49 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0febf9f2..ecf8fc84 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -293,58 +293,59 @@ jobs: USER_EMAIL: ${{ vars.USER_EMAIL }} USER_PASSWORD: ${{ vars.USER_PASSWORD }} - # - name: Set up Appium tests - # working-directory: appium-test - # run: npm install - - # - name: Set up Appium driver - # run: npx --yes appium@next driver install uiautomator2 - - # - name: Start Appium server - # run: npx --yes appium@next & # Appium recommends this until v2 is released - - # - name: Create AVD and generate snapshot for caching - # if: steps.avd-cache.outputs.cache-hit != 'true' - # uses: reactivecircus/android-emulator-runner@v2 - # with: - # api-level: ${{ matrix.android-api }} - # target: playstore - # arch: x86_64 - # profile: 5.4in FWVGA - # force-avd-creation: false - # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - # disable-animations: false - # script: echo "Generated AVD snapshot for caching." - - # - name: Run Appium tests - # uses: reactivecircus/android-emulator-runner@v2 - # with: - # api-level: ${{ matrix.android-api }} - # target: playstore - # arch: x86_64 - # profile: 5.4in FWVGA - # ram-size: 10240M - # heap-size: 4096M - # force-avd-creation: false - # emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - # disable-animations: true - # script: | - # adb shell pm clear com.android.chrome - # adb shell am set-debug-app --persistent com.android.chrome - # adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - # adb emu screenrecord start --time-limit 300 ./recording_video.webm - # adb shell settings put system pointer_location 1 - # USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - - # - name: Upload recording - # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - # if: ${{ failure() }} - # with: - # name: 'Android - smoke tests recording' - # path: recording_video.webm + - name: Set up Appium tests + working-directory: appium-test + run: npm install + + - name: Set up Appium driver + run: npx --yes appium@next driver install uiautomator2 + + - name: Start Appium server + run: npx --yes appium@next & # Appium recommends this until v2 is released + + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: false + script: echo "Generated AVD snapshot for caching." + + - name: Run Appium tests + uses: reactivecircus/android-emulator-runner@v2 + with: + api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA + ram-size: 10240M + heap-size: 4096M + force-avd-creation: false + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: | + adb shell pm clear com.android.chrome + adb shell am set-debug-app --persistent com.android.chrome + adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + adb emu screenrecord start --time-limit 300 ./recording_video.webm + adb shell settings put system pointer_location 1 + USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js + + - name: Upload recording + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android - smoke tests recording' + path: recording_video.webm - name: Upload APK uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} with: name: 'Android - APK' path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk From ba060594453d87774f1eddb995ea0d4a50347898 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Fri, 15 Sep 2023 00:18:24 +0530 Subject: [PATCH 182/201] Update test.js --- appium-test/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium-test/test.js b/appium-test/test.js index b91c4495..e9c05dd7 100644 --- a/appium-test/test.js +++ b/appium-test/test.js @@ -13,7 +13,7 @@ const wdOpts = { host: process.env.APPIUM_HOST || 'localhost', port: parseInt(process.env.APPIUM_PORT, 10) || 4723, logLevel: 'info', - waitforTimeout: 100000, + waitforTimeout: 500000, capabilities, }; From 36ea9fe2d8de76b920e75b70136909182b83231f Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Fri, 15 Sep 2023 01:17:45 +0530 Subject: [PATCH 183/201] Trigger Build From e65dbe09a29c0563827c2b718b25454b7a9ed52d Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 12:18:59 +0100 Subject: [PATCH 184/201] Uncomment other jobs --- .github/workflows/main.yml | 464 ++++++++++++++++++------------------- 1 file changed, 232 insertions(+), 232 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ecf8fc84..8e8438bd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,235 +15,235 @@ jobs: steps: - run: true - # analyze-auth0_flutter: - # name: Analyze auth0_flutter Flutter package - # needs: authorize - # runs-on: ubuntu-latest - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Install Flutter - # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - # with: - # flutter-version: ${{ env.flutter }} - # channel: stable - # cache: true - - # - name: Add example/.env - # working-directory: auth0_flutter - # run: cp example/.env.example example/.env - - # - name: Analize auth0_flutter package - # working-directory: auth0_flutter - # run: flutter analyze - - # analyze-auth0_flutter_platform_interface: - # name: Analyze auth0_flutter_platform_interface Flutter package - # needs: authorize - # runs-on: ubuntu-latest - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Install Flutter - # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - # with: - # flutter-version: ${{ env.flutter }} - # channel: stable - # cache: true - - # - name: Analize auth0_flutter_platform_interface package - # working-directory: auth0_flutter_platform_interface - # run: flutter analyze - - # test-auth0_flutter: - # name: Test auth0_flutter Flutter package - # needs: authorize - # runs-on: ubuntu-latest - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Install Flutter - # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - # with: - # flutter-version: ${{ env.flutter }} - # channel: stable - # cache: true - - # - name: Add example/.env - # working-directory: auth0_flutter - # run: cp example/.env.example example/.env - - # - name: Test auth0_flutter package - # working-directory: auth0_flutter - # run: | - # flutter test --tags browser --platform chrome - # flutter test --coverage --exclude-tags browser - - # - name: Upload coverage report for auth0_flutter - # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - # with: - # name: Auth0 Flutter - # flags: auth0_flutter - # files: ./auth0_flutter/coverage/lcov.info - - # test-auth0_flutter_platform_interface: - # name: Test auth0_flutter_platform_interface Flutter package - # needs: authorize - # runs-on: ubuntu-latest - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Install Flutter - # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - # with: - # flutter-version: ${{ env.flutter }} - # channel: stable - # cache: true - - # - name: Test auth0_flutter_platform_interface package - # working-directory: auth0_flutter_platform_interface - # run: flutter test --coverage - - # - name: Upload coverage report for auth0_flutter_platform_interface - # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - # with: - # name: Auth0 Flutter - # flags: auth0_flutter_platform_interface - # files: ./auth0_flutter_platform_interface/coverage/lcov.info - - # test-ios-unit: - # name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} - # needs: authorize - # runs-on: macos-latest - # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - # env: - # USER_EMAIL: ${{ secrets.USER_EMAIL }} - # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - - # strategy: - # matrix: - # xcode: - # - '14.2' - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Set up environment - # uses: ./.github/actions/setup-ios - # with: - # flutter: ${{ env.flutter }} - # xcode: ${{ matrix.xcode }} - # auth0-domain: ${{ vars.AUTH0_DOMAIN }} - # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - # - name: Run iOS unit tests - # working-directory: auth0_flutter/example/ios - # run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests - - # - name: Convert coverage report - # working-directory: auth0_flutter/example/ios - # run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj - - # - name: Upload coverage report - # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - # with: - # directory: auth0_flutter/example/ios/cobertura - - # - name: Upload xcresult bundles - # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - # if: ${{ failure() }} - # with: - # name: xcresult bundles - # path: 'auth0_flutter/example/ios/*.xcresult' - - # test-ios-smoke: - # name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} - # needs: authorize - # runs-on: macos-latest - # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - # env: - # USER_EMAIL: ${{ secrets.USER_EMAIL }} - # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - - # strategy: - # matrix: - # xcode: - # - '14.2' - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Set up environment - # uses: ./.github/actions/setup-ios - # with: - # flutter: ${{ env.flutter }} - # xcode: ${{ matrix.xcode }} - # auth0-domain: ${{ vars.AUTH0_DOMAIN }} - # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - # - name: Run iOS smoke tests - # if: ${{ github.event.pull_request.head.repo.fork == false }} - # working-directory: auth0_flutter/example/ios - # run: | - # defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 - # xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - - # - name: Upload xcresult bundles - # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - # if: ${{ failure() }} - # with: - # name: 'iOS - xcresult bundles' - # path: 'auth0_flutter/example/ios/*.xcresult' - - # test-android-unit: - # name: Run native Android unit tests - # needs: authorize - # runs-on: ubuntu-latest - # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - # steps: - # - name: Checkout - # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - # - name: Set up environment - # uses: ./.github/actions/setup-android - # with: - # flutter: ${{ env.flutter }} - # java: ${{ env.java }} - # auth0-domain: ${{ vars.AUTH0_DOMAIN }} - # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - # - name: Build Android example app - # working-directory: auth0_flutter/example - # run: flutter build apk --split-per-abi - - # - name: Run Android unit tests - # working-directory: auth0_flutter/example/android - # run: ./gradlew testDebugUnitTest createDebugCoverageReport - - # - name: Upload coverage report - # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - # with: - # directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected - - # - name: Upload test results - # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - # if: ${{ failure() }} - # with: - # name: Test results - # path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' + analyze-auth0_flutter: + name: Analyze auth0_flutter Flutter package + needs: authorize + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true + + - name: Add example/.env + working-directory: auth0_flutter + run: cp example/.env.example example/.env + + - name: Analize auth0_flutter package + working-directory: auth0_flutter + run: flutter analyze + + analyze-auth0_flutter_platform_interface: + name: Analyze auth0_flutter_platform_interface Flutter package + needs: authorize + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true + + - name: Analize auth0_flutter_platform_interface package + working-directory: auth0_flutter_platform_interface + run: flutter analyze + + test-auth0_flutter: + name: Test auth0_flutter Flutter package + needs: authorize + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true + + - name: Add example/.env + working-directory: auth0_flutter + run: cp example/.env.example example/.env + + - name: Test auth0_flutter package + working-directory: auth0_flutter + run: | + flutter test --tags browser --platform chrome + flutter test --coverage --exclude-tags browser + + - name: Upload coverage report for auth0_flutter + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + name: Auth0 Flutter + flags: auth0_flutter + files: ./auth0_flutter/coverage/lcov.info + + test-auth0_flutter_platform_interface: + name: Test auth0_flutter_platform_interface Flutter package + needs: authorize + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Install Flutter + uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + with: + flutter-version: ${{ env.flutter }} + channel: stable + cache: true + + - name: Test auth0_flutter_platform_interface package + working-directory: auth0_flutter_platform_interface + run: flutter test --coverage + + - name: Upload coverage report for auth0_flutter_platform_interface + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + name: Auth0 Flutter + flags: auth0_flutter_platform_interface + files: ./auth0_flutter_platform_interface/coverage/lcov.info + + test-ios-unit: + name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} + needs: authorize + runs-on: macos-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + env: + USER_EMAIL: ${{ secrets.USER_EMAIL }} + USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + + strategy: + matrix: + xcode: + - '14.2' + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Set up environment + uses: ./.github/actions/setup-ios + with: + flutter: ${{ env.flutter }} + xcode: ${{ matrix.xcode }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Run iOS unit tests + working-directory: auth0_flutter/example/ios + run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests + + - name: Convert coverage report + working-directory: auth0_flutter/example/ios + run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj + + - name: Upload coverage report + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + directory: auth0_flutter/example/ios/cobertura + + - name: Upload xcresult bundles + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: xcresult bundles + path: 'auth0_flutter/example/ios/*.xcresult' + + test-ios-smoke: + name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} + needs: authorize + runs-on: macos-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + env: + USER_EMAIL: ${{ secrets.USER_EMAIL }} + USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + + strategy: + matrix: + xcode: + - '14.2' + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Set up environment + uses: ./.github/actions/setup-ios + with: + flutter: ${{ env.flutter }} + xcode: ${{ matrix.xcode }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Run iOS smoke tests + if: ${{ github.event.pull_request.head.repo.fork == false }} + working-directory: auth0_flutter/example/ios + run: | + defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 + xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + + - name: Upload xcresult bundles + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'iOS - xcresult bundles' + path: 'auth0_flutter/example/ios/*.xcresult' + + test-android-unit: + name: Run native Android unit tests + needs: authorize + runs-on: ubuntu-latest + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Set up environment + uses: ./.github/actions/setup-android + with: + flutter: ${{ env.flutter }} + java: ${{ env.java }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk --split-per-abi + + - name: Run Android unit tests + working-directory: auth0_flutter/example/android + run: ./gradlew testDebugUnitTest createDebugCoverageReport + + - name: Upload coverage report + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + with: + directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected + + - name: Upload test results + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: Test results + path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' test-android-smoke: name: Run native Android smoke tests using API-level ${{ matrix.android-api }} @@ -258,7 +258,7 @@ jobs: strategy: matrix: - android-api: + android-api: - 32 steps: @@ -267,7 +267,7 @@ jobs: - name: Gradle cache uses: gradle/gradle-build-action@v2 - + - name: AVD cache uses: actions/cache@v3 id: avd-cache @@ -330,7 +330,7 @@ jobs: disable-animations: true script: | adb shell pm clear com.android.chrome - adb shell am set-debug-app --persistent com.android.chrome + adb shell am set-debug-app --persistent com.android.chrome adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 From 4c0b935290c83600034a3b742fcee152fa733a61 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 13:00:03 +0100 Subject: [PATCH 185/201] Set permissions and concurrency config --- .github/workflows/main.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8e8438bd..d41cad30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,6 +1,12 @@ name: CI on: push +permissions: {} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref == 'refs/heads/master' }} + env: flutter: '3.x' xcode: '14.2' From 8fff442a6ff8a298e74c4f5d9347c075fedca660 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 17:23:53 +0100 Subject: [PATCH 186/201] Change trigger to pull_request --- .github/workflows/main.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d41cad30..5da65817 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,5 +1,9 @@ name: CI -on: push +on: + pull_request: + types: + - opened + - synchronize permissions: {} From f3edaf21e5293056430ae2a12e5de57ae7e4a0fe Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 17:43:29 +0100 Subject: [PATCH 187/201] Restore usage of `AUTH0_CUSTOM_SCHEME` var --- auth0_flutter/example/android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index 99726185..e8aa7cf9 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -56,7 +56,7 @@ android { versionName flutterVersionName testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" manifestPlaceholders = [auth0Domain: "$System.env.AUTH0_DOMAIN", - auth0Scheme: "demo"] + auth0Scheme: "$System.env.AUTH0_CUSTOM_SCHEME"] testOptions { unitTests.all { From ebfdeab7ae1825590449876557e6bc530b3ff572 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 17:56:49 +0100 Subject: [PATCH 188/201] Pin remaining actions to SHA --- .github/workflows/main.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5da65817..9cc57b6b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -276,10 +276,10 @@ jobs: uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - name: Gradle cache - uses: gradle/gradle-build-action@v2 + uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc - name: AVD cache - uses: actions/cache@v3 + uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 id: avd-cache with: path: | @@ -315,7 +315,7 @@ jobs: - name: Create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@v2 + uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b with: api-level: ${{ matrix.android-api }} target: playstore @@ -327,7 +327,7 @@ jobs: script: echo "Generated AVD snapshot for caching." - name: Run Appium tests - uses: reactivecircus/android-emulator-runner@v2 + uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b with: api-level: ${{ matrix.android-api }} target: playstore From 6e590630eb144a83983dd77c012af426ebbddbfb Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 21:51:33 +0100 Subject: [PATCH 189/201] Only cancel in-progress runs on branches other than master --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9cc57b6b..02503564 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,7 +9,7 @@ permissions: {} concurrency: group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.ref == 'refs/heads/master' }} + cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} env: flutter: '3.x' From 9a790936aa4e69bf9fe3a964a93195d9d717c4ae Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Fri, 15 Sep 2023 22:02:47 +0100 Subject: [PATCH 190/201] Use the correct ref name --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 02503564..3cb07c0c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,7 +9,7 @@ permissions: {} concurrency: group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.ref != 'refs/heads/master' }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} env: flutter: '3.x' From 118f062d0fc7d0a0d71614be5408dd5107b09e64 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 5 Oct 2023 00:18:30 +0100 Subject: [PATCH 191/201] Comment out the Android smoke test job --- .github/workflows/main.yml | 208 ++++++++++++++++++------------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3cb07c0c..0a4a07ac 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -255,107 +255,107 @@ jobs: name: Test results path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' - test-android-smoke: - name: Run native Android smoke tests using API-level ${{ matrix.android-api }} - needs: authorize - runs-on: macos-latest-xl - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - env: - USER_EMAIL: ${{ secrets.USER_EMAIL }} - USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 50 - - strategy: - matrix: - android-api: - - 32 - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Gradle cache - uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc - - - name: AVD cache - uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.android-api }} - - - name: Set up environment - uses: ./.github/actions/setup-android - with: - flutter: ${{ env.flutter }} - java: ${{ env.java }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - - name: Build Android example app - working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi - env: - AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} - USER_EMAIL: ${{ vars.USER_EMAIL }} - USER_PASSWORD: ${{ vars.USER_PASSWORD }} - - - name: Set up Appium tests - working-directory: appium-test - run: npm install - - - name: Set up Appium driver - run: npx --yes appium@next driver install uiautomator2 - - - name: Start Appium server - run: npx --yes appium@next & # Appium recommends this until v2 is released - - - name: Create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b - with: - api-level: ${{ matrix.android-api }} - target: playstore - arch: x86_64 - profile: 5.4in FWVGA - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: false - script: echo "Generated AVD snapshot for caching." - - - name: Run Appium tests - uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b - with: - api-level: ${{ matrix.android-api }} - target: playstore - arch: x86_64 - profile: 5.4in FWVGA - ram-size: 10240M - heap-size: 4096M - force-avd-creation: false - emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: true - script: | - adb shell pm clear com.android.chrome - adb shell am set-debug-app --persistent com.android.chrome - adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - adb emu screenrecord start --time-limit 300 ./recording_video.webm - adb shell settings put system pointer_location 1 - USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - - - name: Upload recording - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: 'Android - smoke tests recording' - path: recording_video.webm - - - name: Upload APK - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: 'Android - APK' - path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk + # test-android-smoke: + # name: Run native Android smoke tests using API-level ${{ matrix.android-api }} + # needs: authorize + # runs-on: macos-latest-xl + # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + # env: + # USER_EMAIL: ${{ secrets.USER_EMAIL }} + # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + # ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 50 + + # strategy: + # matrix: + # android-api: + # - 32 + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + # - name: Gradle cache + # uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc + + # - name: AVD cache + # uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + # id: avd-cache + # with: + # path: | + # ~/.android/avd/* + # ~/.android/adb* + # key: avd-${{ matrix.android-api }} + + # - name: Set up environment + # uses: ./.github/actions/setup-android + # with: + # flutter: ${{ env.flutter }} + # java: ${{ env.java }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + # - name: Build Android example app + # working-directory: auth0_flutter/example + # run: flutter build apk --split-per-abi + # env: + # AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} + # USER_EMAIL: ${{ vars.USER_EMAIL }} + # USER_PASSWORD: ${{ vars.USER_PASSWORD }} + + # - name: Set up Appium tests + # working-directory: appium-test + # run: npm install + + # - name: Set up Appium driver + # run: npx --yes appium@next driver install uiautomator2 + + # - name: Start Appium server + # run: npx --yes appium@next & # Appium recommends this until v2 is released + + # - name: Create AVD and generate snapshot for caching + # if: steps.avd-cache.outputs.cache-hit != 'true' + # uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + # with: + # api-level: ${{ matrix.android-api }} + # target: playstore + # arch: x86_64 + # profile: 5.4in FWVGA + # force-avd-creation: false + # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # disable-animations: false + # script: echo "Generated AVD snapshot for caching." + + # - name: Run Appium tests + # uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + # with: + # api-level: ${{ matrix.android-api }} + # target: playstore + # arch: x86_64 + # profile: 5.4in FWVGA + # ram-size: 10240M + # heap-size: 4096M + # force-avd-creation: false + # emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # disable-animations: true + # script: | + # adb shell pm clear com.android.chrome + # adb shell am set-debug-app --persistent com.android.chrome + # adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + # adb emu screenrecord start --time-limit 300 ./recording_video.webm + # adb shell settings put system pointer_location 1 + # USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js + + # - name: Upload recording + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: 'Android - smoke tests recording' + # path: recording_video.webm + + # - name: Upload APK + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: 'Android - APK' + # path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk From a19b39012ef805440c24ef66857e36f8ff5d9187 Mon Sep 17 00:00:00 2001 From: Rita Zerrizuela Date: Thu, 5 Oct 2023 00:25:00 +0100 Subject: [PATCH 192/201] Update Kotlin version --- auth0_flutter/example/android/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth0_flutter/example/android/build.gradle b/auth0_flutter/example/android/build.gradle index 1f7f80b9..2beaf869 100644 --- a/auth0_flutter/example/android/build.gradle +++ b/auth0_flutter/example/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '1.9.10' repositories { google() mavenCentral() From 90ec30c2369a6d0ac2fcbc998e82f01bf0116144 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 12:27:37 +0200 Subject: [PATCH 193/201] Implement Android instrumentation test --- .../example/android/app/build.gradle | 6 ++ .../kotlin/example/MainActivityTest.kt | 85 +++++++++++++++++++ .../example/android/gradle.properties | 2 +- 3 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 auth0_flutter/example/android/app/src/androidTest/kotlin/example/MainActivityTest.kt diff --git a/auth0_flutter/example/android/app/build.gradle b/auth0_flutter/example/android/app/build.gradle index bcffda3a..b85c5560 100644 --- a/auth0_flutter/example/android/app/build.gradle +++ b/auth0_flutter/example/android/app/build.gradle @@ -94,4 +94,10 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'androidx.test:core-ktx:1.5.0' + + androidTestImplementation "androidx.test:runner:1.5.2" + androidTestImplementation "androidx.test:rules:1.5.0" + androidTestImplementation "androidx.test.uiautomator:uiautomator:2.2.0" + androidTestImplementation 'androidx.test.ext:junit:1.1.5' } diff --git a/auth0_flutter/example/android/app/src/androidTest/kotlin/example/MainActivityTest.kt b/auth0_flutter/example/android/app/src/androidTest/kotlin/example/MainActivityTest.kt new file mode 100644 index 00000000..87872dc2 --- /dev/null +++ b/auth0_flutter/example/android/app/src/androidTest/kotlin/example/MainActivityTest.kt @@ -0,0 +1,85 @@ +package example + +import android.content.Context +import android.content.Intent +import android.widget.Button +import android.widget.EditText +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.uiautomator.By +import androidx.test.uiautomator.UiDevice +import androidx.test.uiautomator.Until +import com.auth0.auth0_flutter_example.test.BuildConfig +import org.hamcrest.CoreMatchers.notNullValue +import org.hamcrest.MatcherAssert.assertThat +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class MainActivityTest { + + private val device: UiDevice + private val PACKAGE_NAME = "com.auth0.auth0_flutter_example" + private val CLASSIC_UL = true; + private val APP_TITLE = "Auth0 Example" + private val LOGIN_BUTTON = "Web Auth Login" + private val LOGOUT_BUTTON = "Web Auth Logout" + private val UL_BUTTON = if (CLASSIC_UL) "Log In" else "Continue" + private val TIMEOUT = 30000L + + init { + val instrumentation = InstrumentationRegistry.getInstrumentation() + device = UiDevice.getInstance(instrumentation) + } + + @Before + fun launchApp() { + device.pressHome() + + val launcherPackage: String = device.launcherPackageName + assertThat(launcherPackage, notNullValue()) + device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), TIMEOUT) + + // Launch the app + val context = ApplicationProvider.getApplicationContext() + val intent = context.packageManager.getLaunchIntentForPackage(PACKAGE_NAME)?.apply { + // Clear out any previous instances + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + } + context.startActivity(intent) + + // Wait for the app to appear + device.wait(Until.hasObject(By.pkg(PACKAGE_NAME).depth(0)), TIMEOUT) + device.wait(Until.hasObject(By.textContains(APP_TITLE)), TIMEOUT) + } + + @Test + fun testWebAuthenticationFlow() { + // Initialize UiDevice instance + val loginButton = By.clazz(Button::class.qualifiedName).descContains(LOGIN_BUTTON) + device.wait(Until.hasObject(loginButton), TIMEOUT) + device.findObject(loginButton).click() + + // Fill login form + val ulButton = By.clazz(Button::class.qualifiedName).textContains(UL_BUTTON) + device.wait(Until.hasObject(ulButton), TIMEOUT) + val textInputs = By.clazz(EditText::class.qualifiedName) + device.wait(Until.hasObject(textInputs), TIMEOUT) + val emailInput = device.findObjects(textInputs).first() + emailInput.text = BuildConfig.USER_EMAIL + val passwordInput = device.findObjects(textInputs).last() + passwordInput.text = BuildConfig.USER_PASSWORD + device.pressEnter() + device.findObject(ulButton).click() + + // Logout + val logoutButton = By.clazz(Button::class.qualifiedName).descContains(LOGOUT_BUTTON) + device.wait(Until.hasObject(logoutButton), TIMEOUT) + device.findObject(logoutButton).click() + device.wait(Until.hasObject(loginButton), TIMEOUT) + + assertThat(device.findObject(loginButton), notNullValue()) + } +} diff --git a/auth0_flutter/example/android/gradle.properties b/auth0_flutter/example/android/gradle.properties index a777f0ef..ecc1badd 100644 --- a/auth0_flutter/example/android/gradle.properties +++ b/auth0_flutter/example/android/gradle.properties @@ -1,4 +1,4 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx4608m android.useAndroidX=true android.enableJetifier=true android.jetifier.blacklist=bcprov-jdk15on From f06b428afae73dad5ea629639984622ef04d6c81 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 12:39:18 +0200 Subject: [PATCH 194/201] Test Android smoke test --- .github/workflows/main.yml | 537 ++++++++++++++++++------------------- 1 file changed, 264 insertions(+), 273 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0a4a07ac..f5d7d329 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -25,267 +25,207 @@ jobs: steps: - run: true - analyze-auth0_flutter: - name: Analyze auth0_flutter Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Add example/.env - working-directory: auth0_flutter - run: cp example/.env.example example/.env - - - name: Analize auth0_flutter package - working-directory: auth0_flutter - run: flutter analyze - - analyze-auth0_flutter_platform_interface: - name: Analyze auth0_flutter_platform_interface Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Analize auth0_flutter_platform_interface package - working-directory: auth0_flutter_platform_interface - run: flutter analyze - - test-auth0_flutter: - name: Test auth0_flutter Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true - - - name: Add example/.env - working-directory: auth0_flutter - run: cp example/.env.example example/.env - - - name: Test auth0_flutter package - working-directory: auth0_flutter - run: | - flutter test --tags browser --platform chrome - flutter test --coverage --exclude-tags browser - - - name: Upload coverage report for auth0_flutter - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - name: Auth0 Flutter - flags: auth0_flutter - files: ./auth0_flutter/coverage/lcov.info - - test-auth0_flutter_platform_interface: - name: Test auth0_flutter_platform_interface Flutter package - needs: authorize - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - - name: Install Flutter - uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa - with: - flutter-version: ${{ env.flutter }} - channel: stable - cache: true + # analyze-auth0_flutter: + # name: Analyze auth0_flutter Flutter package + # needs: authorize + # runs-on: ubuntu-latest - - name: Test auth0_flutter_platform_interface package - working-directory: auth0_flutter_platform_interface - run: flutter test --coverage + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Upload coverage report for auth0_flutter_platform_interface - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - name: Auth0 Flutter - flags: auth0_flutter_platform_interface - files: ./auth0_flutter_platform_interface/coverage/lcov.info + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true - test-ios-unit: - name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} - needs: authorize - runs-on: macos-latest - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + # - name: Add example/.env + # working-directory: auth0_flutter + # run: cp example/.env.example example/.env - env: - USER_EMAIL: ${{ secrets.USER_EMAIL }} - USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + # - name: Analize auth0_flutter package + # working-directory: auth0_flutter + # run: flutter analyze - strategy: - matrix: - xcode: - - '14.2' + # analyze-auth0_flutter_platform_interface: + # name: Analyze auth0_flutter_platform_interface Flutter package + # needs: authorize + # runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Set up environment - uses: ./.github/actions/setup-ios - with: - flutter: ${{ env.flutter }} - xcode: ${{ matrix.xcode }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true - - name: Run iOS unit tests - working-directory: auth0_flutter/example/ios - run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests + # - name: Analize auth0_flutter_platform_interface package + # working-directory: auth0_flutter_platform_interface + # run: flutter analyze - - name: Convert coverage report - working-directory: auth0_flutter/example/ios - run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj + # test-auth0_flutter: + # name: Test auth0_flutter Flutter package + # needs: authorize + # runs-on: ubuntu-latest - - name: Upload coverage report - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - directory: auth0_flutter/example/ios/cobertura + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Upload xcresult bundles - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: xcresult bundles - path: 'auth0_flutter/example/ios/*.xcresult' + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true + + # - name: Add example/.env + # working-directory: auth0_flutter + # run: cp example/.env.example example/.env + + # - name: Test auth0_flutter package + # working-directory: auth0_flutter + # run: | + # flutter test --tags browser --platform chrome + # flutter test --coverage --exclude-tags browser + + # - name: Upload coverage report for auth0_flutter + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # name: Auth0 Flutter + # flags: auth0_flutter + # files: ./auth0_flutter/coverage/lcov.info - test-ios-smoke: - name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} - needs: authorize - runs-on: macos-latest - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + # test-auth0_flutter_platform_interface: + # name: Test auth0_flutter_platform_interface Flutter package + # needs: authorize + # runs-on: ubuntu-latest - env: - USER_EMAIL: ${{ secrets.USER_EMAIL }} - USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - strategy: - matrix: - xcode: - - '14.2' + # - name: Install Flutter + # uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa + # with: + # flutter-version: ${{ env.flutter }} + # channel: stable + # cache: true - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + # - name: Test auth0_flutter_platform_interface package + # working-directory: auth0_flutter_platform_interface + # run: flutter test --coverage - - name: Set up environment - uses: ./.github/actions/setup-ios - with: - flutter: ${{ env.flutter }} - xcode: ${{ matrix.xcode }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + # - name: Upload coverage report for auth0_flutter_platform_interface + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # name: Auth0 Flutter + # flags: auth0_flutter_platform_interface + # files: ./auth0_flutter_platform_interface/coverage/lcov.info - - name: Run iOS smoke tests - if: ${{ github.event.pull_request.head.repo.fork == false }} - working-directory: auth0_flutter/example/ios - run: | - defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 - xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests + # test-ios-unit: + # name: Run native iOS unit tests using Xcode ${{ matrix.xcode }} + # needs: authorize + # runs-on: macos-latest + # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} - - name: Upload xcresult bundles - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: 'iOS - xcresult bundles' - path: 'auth0_flutter/example/ios/*.xcresult' + # env: + # USER_EMAIL: ${{ secrets.USER_EMAIL }} + # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - test-android-unit: - name: Run native Android unit tests - needs: authorize - runs-on: ubuntu-latest - environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + # strategy: + # matrix: + # xcode: + # - '14.2' - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Set up environment - uses: ./.github/actions/setup-android - with: - flutter: ${{ env.flutter }} - java: ${{ env.java }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + # - name: Set up environment + # uses: ./.github/actions/setup-ios + # with: + # flutter: ${{ env.flutter }} + # xcode: ${{ matrix.xcode }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - name: Build Android example app - working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi + # - name: Run iOS unit tests + # working-directory: auth0_flutter/example/ios + # run: xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath unit-tests.xcresult -skip-testing:RunnerUITests - - name: Run Android unit tests - working-directory: auth0_flutter/example/android - run: ./gradlew testDebugUnitTest createDebugCoverageReport + # - name: Convert coverage report + # working-directory: auth0_flutter/example/ios + # run: bundle exec slather coverage -x --scheme Runner Runner.xcodeproj - - name: Upload coverage report - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d - with: - directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected + # - name: Upload coverage report + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d + # with: + # directory: auth0_flutter/example/ios/cobertura - - name: Upload test results - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - if: ${{ failure() }} - with: - name: Test results - path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' + # - name: Upload xcresult bundles + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} + # with: + # name: xcresult bundles + # path: 'auth0_flutter/example/ios/*.xcresult' - # test-android-smoke: - # name: Run native Android smoke tests using API-level ${{ matrix.android-api }} + # test-ios-smoke: + # name: Run native iOS smoke tests using Xcode ${{ matrix.xcode }} # needs: authorize - # runs-on: macos-latest-xl + # runs-on: macos-latest # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} # env: # USER_EMAIL: ${{ secrets.USER_EMAIL }} # USER_PASSWORD: ${{ secrets.USER_PASSWORD }} - # ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 50 # strategy: # matrix: - # android-api: - # - 32 + # xcode: + # - '14.2' # steps: # - name: Checkout # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - # - name: Gradle cache - # uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc + # - name: Set up environment + # uses: ./.github/actions/setup-ios + # with: + # flutter: ${{ env.flutter }} + # xcode: ${{ matrix.xcode }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + # - name: Run iOS smoke tests + # if: ${{ github.event.pull_request.head.repo.fork == false }} + # working-directory: auth0_flutter/example/ios + # run: | + # defaults write com.apple.iphonesimulator ConnectHardwareKeyboard 0 + # xcodebuild test -scheme Runner -workspace Runner.xcworkspace -destination '${{ format('{0}{1}', 'platform=iOS Simulator,name=', env.ios-simulator) }}' -resultBundlePath smoke-tests.xcresult -only-testing:RunnerUITests - # - name: AVD cache - # uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 - # id: avd-cache + # - name: Upload xcresult bundles + # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + # if: ${{ failure() }} # with: - # path: | - # ~/.android/avd/* - # ~/.android/adb* - # key: avd-${{ matrix.android-api }} + # name: 'iOS - xcresult bundles' + # path: 'auth0_flutter/example/ios/*.xcresult' + + # test-android-unit: + # name: Run native Android unit tests + # needs: authorize + # runs-on: ubuntu-latest + # environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + # steps: + # - name: Checkout + # uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # - name: Set up environment # uses: ./.github/actions/setup-android @@ -298,64 +238,115 @@ jobs: # - name: Build Android example app # working-directory: auth0_flutter/example # run: flutter build apk --split-per-abi - # env: - # AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} - # USER_EMAIL: ${{ vars.USER_EMAIL }} - # USER_PASSWORD: ${{ vars.USER_PASSWORD }} - - # - name: Set up Appium tests - # working-directory: appium-test - # run: npm install - - # - name: Set up Appium driver - # run: npx --yes appium@next driver install uiautomator2 - # - name: Start Appium server - # run: npx --yes appium@next & # Appium recommends this until v2 is released + # - name: Run Android unit tests + # working-directory: auth0_flutter/example/android + # run: ./gradlew testDebugUnitTest createDebugCoverageReport - # - name: Create AVD and generate snapshot for caching - # if: steps.avd-cache.outputs.cache-hit != 'true' - # uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + # - name: Upload coverage report + # uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # with: - # api-level: ${{ matrix.android-api }} - # target: playstore - # arch: x86_64 - # profile: 5.4in FWVGA - # force-avd-creation: false - # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - # disable-animations: false - # script: echo "Generated AVD snapshot for caching." - - # - name: Run Appium tests - # uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b - # with: - # api-level: ${{ matrix.android-api }} - # target: playstore - # arch: x86_64 - # profile: 5.4in FWVGA - # ram-size: 10240M - # heap-size: 4096M - # force-avd-creation: false - # emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - # disable-animations: true - # script: | - # adb shell pm clear com.android.chrome - # adb shell am set-debug-app --persistent com.android.chrome - # adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' - # adb emu screenrecord start --time-limit 300 ./recording_video.webm - # adb shell settings put system pointer_location 1 - # USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - - # - name: Upload recording - # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce - # if: ${{ failure() }} - # with: - # name: 'Android - smoke tests recording' - # path: recording_video.webm + # directory: auth0_flutter/example/build/app/reports/coverage/androidTest/debug/connected - # - name: Upload APK + # - name: Upload test results # uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # if: ${{ failure() }} # with: - # name: 'Android - APK' - # path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk + # name: Test results + # path: 'auth0_flutter/example/build/app/reports/androidTests/*.xml' + + test-android-smoke: + name: Run native Android smoke tests using API-level ${{ matrix.android-api }} + needs: authorize + runs-on: macos-latest-xl + environment: ${{ github.event.pull_request.head.repo.fork && 'external' || 'internal' }} + + env: + USER_EMAIL: ${{ secrets.USER_EMAIL }} + USER_PASSWORD: ${{ secrets.USER_PASSWORD }} + ANDROID_EMULATOR_WAIT_TIME_BEFORE_KILL: 50 + + strategy: + matrix: + android-api: + - 32 + + steps: + - name: Checkout + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + + - name: Gradle cache + uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc + + - name: AVD cache + uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ matrix.android-api }} + + - name: Set up environment + uses: ./.github/actions/setup-android + with: + flutter: ${{ env.flutter }} + java: ${{ env.java }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk --split-per-abi + env: + AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} + USER_EMAIL: ${{ vars.USER_EMAIL }} + USER_PASSWORD: ${{ vars.USER_PASSWORD }} + + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + with: + api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: false + script: echo "Generated AVD snapshot for caching." + + - name: Run Appium tests + uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + with: + api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA + ram-size: 10240M + heap-size: 4096M + force-avd-creation: false + emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: true + script: | + adb shell pm clear com.android.chrome + adb shell am set-debug-app --persistent com.android.chrome + adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' + adb emu screenrecord start --time-limit 300 ./recording_video.webm + adb shell settings put system pointer_location 1 + USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js + ./gradlew connectedCheck + + - name: Upload recording + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android - smoke tests recording' + path: recording_video.webm + + - name: Upload APK + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android - APK' + path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk From 0b4e610efd6618e6a98b00722bd58d3d06865525 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 12:51:23 +0200 Subject: [PATCH 195/201] Update main.yml --- .github/workflows/main.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f5d7d329..fb5dd365 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -334,8 +334,7 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 - USER_EMAIL=$USER_EMAIL USER_PASSWORD=$USER_PASSWORD node appium-test/test.js - ./gradlew connectedCheck + ./gradlew connectedCheck - name: Upload recording uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce From 9b9eec596cb6ffa8c2a792cb7e9863716a856a2e Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 13:04:46 +0200 Subject: [PATCH 196/201] Check current location --- .github/workflows/main.yml | 81 +++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fb5dd365..96375724 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -275,46 +275,46 @@ jobs: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - - name: Gradle cache - uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc - - - name: AVD cache - uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 - id: avd-cache - with: - path: | - ~/.android/avd/* - ~/.android/adb* - key: avd-${{ matrix.android-api }} - - - name: Set up environment - uses: ./.github/actions/setup-android - with: - flutter: ${{ env.flutter }} - java: ${{ env.java }} - auth0-domain: ${{ vars.AUTH0_DOMAIN }} - auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - - name: Build Android example app - working-directory: auth0_flutter/example - run: flutter build apk --split-per-abi - env: - AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} - USER_EMAIL: ${{ vars.USER_EMAIL }} - USER_PASSWORD: ${{ vars.USER_PASSWORD }} - - - name: Create AVD and generate snapshot for caching - if: steps.avd-cache.outputs.cache-hit != 'true' - uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b - with: - api-level: ${{ matrix.android-api }} - target: playstore - arch: x86_64 - profile: 5.4in FWVGA - force-avd-creation: false - emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - disable-animations: false - script: echo "Generated AVD snapshot for caching." + # - name: Gradle cache + # uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc + + # - name: AVD cache + # uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + # id: avd-cache + # with: + # path: | + # ~/.android/avd/* + # ~/.android/adb* + # key: avd-${{ matrix.android-api }} + + # - name: Set up environment + # uses: ./.github/actions/setup-android + # with: + # flutter: ${{ env.flutter }} + # java: ${{ env.java }} + # auth0-domain: ${{ vars.AUTH0_DOMAIN }} + # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + # - name: Build Android example app + # working-directory: auth0_flutter/example + # run: flutter build apk --split-per-abi + # env: + # AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} + # USER_EMAIL: ${{ vars.USER_EMAIL }} + # USER_PASSWORD: ${{ vars.USER_PASSWORD }} + + # - name: Create AVD and generate snapshot for caching + # if: steps.avd-cache.outputs.cache-hit != 'true' + # uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + # with: + # api-level: ${{ matrix.android-api }} + # target: playstore + # arch: x86_64 + # profile: 5.4in FWVGA + # force-avd-creation: false + # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # disable-animations: false + # script: echo "Generated AVD snapshot for caching." - name: Run Appium tests uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b @@ -334,6 +334,7 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 + ls ./gradlew connectedCheck - name: Upload recording From 1f4e08d41c14c9bdff3b9d7050d7584752ad6a02 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 13:10:56 +0200 Subject: [PATCH 197/201] Update main.yml --- .github/workflows/main.yml | 82 +++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96375724..41c37806 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -275,46 +275,46 @@ jobs: - name: Checkout uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 - # - name: Gradle cache - # uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc - - # - name: AVD cache - # uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 - # id: avd-cache - # with: - # path: | - # ~/.android/avd/* - # ~/.android/adb* - # key: avd-${{ matrix.android-api }} - - # - name: Set up environment - # uses: ./.github/actions/setup-android - # with: - # flutter: ${{ env.flutter }} - # java: ${{ env.java }} - # auth0-domain: ${{ vars.AUTH0_DOMAIN }} - # auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} - - # - name: Build Android example app - # working-directory: auth0_flutter/example - # run: flutter build apk --split-per-abi - # env: - # AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} - # USER_EMAIL: ${{ vars.USER_EMAIL }} - # USER_PASSWORD: ${{ vars.USER_PASSWORD }} - - # - name: Create AVD and generate snapshot for caching - # if: steps.avd-cache.outputs.cache-hit != 'true' - # uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b - # with: - # api-level: ${{ matrix.android-api }} - # target: playstore - # arch: x86_64 - # profile: 5.4in FWVGA - # force-avd-creation: false - # emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - # disable-animations: false - # script: echo "Generated AVD snapshot for caching." + - name: Gradle cache + uses: gradle/gradle-build-action@ef76a971e2fa3f867b617efd72f2fbd72cf6f8bc + + - name: AVD cache + uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 + id: avd-cache + with: + path: | + ~/.android/avd/* + ~/.android/adb* + key: avd-${{ matrix.android-api }} + + - name: Set up environment + uses: ./.github/actions/setup-android + with: + flutter: ${{ env.flutter }} + java: ${{ env.java }} + auth0-domain: ${{ vars.AUTH0_DOMAIN }} + auth0-client-id: ${{ vars.AUTH0_CLIENT_ID }} + + - name: Build Android example app + working-directory: auth0_flutter/example + run: flutter build apk --split-per-abi + env: + AUTH0_DOMAIN: ${{ vars.AUTH0_DOMAIN }} + USER_EMAIL: ${{ vars.USER_EMAIL }} + USER_PASSWORD: ${{ vars.USER_PASSWORD }} + + - name: Create AVD and generate snapshot for caching + if: steps.avd-cache.outputs.cache-hit != 'true' + uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b + with: + api-level: ${{ matrix.android-api }} + target: playstore + arch: x86_64 + profile: 5.4in FWVGA + force-avd-creation: false + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + disable-animations: false + script: echo "Generated AVD snapshot for caching." - name: Run Appium tests uses: reactivecircus/android-emulator-runner@d94c3fbe4fe6a29e4a5ba47c12fb47677c73656b @@ -334,7 +334,7 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 - ls + cd auth0_flutter/example/android ./gradlew connectedCheck - name: Upload recording From 731126c510bc3372411f9b4660e83f63cf809dba Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 13:22:35 +0200 Subject: [PATCH 198/201] Update main.yml --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 41c37806..c2efb4a1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -335,6 +335,7 @@ jobs: adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 cd auth0_flutter/example/android + ls ./gradlew connectedCheck - name: Upload recording From 6ab08525029d3d27d49df1cdb7aa77bd06dfb003 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 13:23:47 +0200 Subject: [PATCH 199/201] Update main.yml --- .github/workflows/main.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c2efb4a1..26fca378 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -334,9 +334,7 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 - cd auth0_flutter/example/android - ls - ./gradlew connectedCheck + (cd auth0_flutter/example/android && ./gradlew connectedCheck) - name: Upload recording uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce From a50f21598e12f391d78c6a527cd90f3934c5218e Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 13:23:56 +0200 Subject: [PATCH 200/201] Update main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 26fca378..be4777bc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -334,7 +334,7 @@ jobs: adb shell 'echo "chrome --disable-fre --no-default-browser-check --no-first-run" > /data/local/tmp/chrome-command-line' adb emu screenrecord start --time-limit 300 ./recording_video.webm adb shell settings put system pointer_location 1 - (cd auth0_flutter/example/android && ./gradlew connectedCheck) + (cd ./auth0_flutter/example/android && ./gradlew connectedCheck) - name: Upload recording uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce From 68e6e86b056b359cee340e602047561345b4b5f3 Mon Sep 17 00:00:00 2001 From: Poovamraj T T Date: Mon, 9 Oct 2023 15:29:52 +0200 Subject: [PATCH 201/201] Update main.yml --- .github/workflows/main.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index be4777bc..5d316a19 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -349,3 +349,10 @@ jobs: with: name: 'Android - APK' path: ./auth0_flutter/example/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk + + - name: Upload Test Report + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce + if: ${{ failure() }} + with: + name: 'Android - APK' + path: ./auth0_flutter/example/build/auth0_flutter/reports/coverage/androidTest/debug/connected/index.html