Skip to content

Commit

Permalink
Merge branch 'develop' into sam/add-netp-subscription-auth-support
Browse files Browse the repository at this point in the history
# By Graeme Arthur (14) and others
# Via Graeme Arthur (7) and others
* develop: (87 commits)
  NetP waitlist (#2160)
  NetP VPN locations screen (#2183)
  bump bsk for CBR energy usage  (#2195)
  Fix sync Form Factor specific favorites tests (#2164)
  Release 7.98.0 (#2193)
  Update BSK ref to latest one (#2191)
  Release 7.97.1 (#2190)
  Revert "Breakage report improvements" (#2189)
  Breakage report improvements (#2168)
  bump C-S-S to 4.52.0 (#2186)
  Revert "refactor bookmarks and fire pixel if migration happens more than once"
  refactor bookmarks and fire pixel if migration happens more than once
  Release 7.98.0 (#2179)
  Bump autoconsent to 6.4.0 (#2174)
  remove redundant orientation detection (#2178)
  Removed unarchiveTopLevelObjectWithData deprecation (#2176)
  fix pass kit related crash on iPad (#2171)
  Update email protection e2e test to match the new UI (#2170)
  Updates BSK (#2173)
  Rolls back a BSK change by mistake
  ...

# Conflicts:
#	DuckDuckGo.xcodeproj/project.pbxproj
#	DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
#	PacketTunnelProvider/NetworkProtection/NetworkProtectionPacketTunnelProvider.swift
#	PacketTunnelProvider/en.lproj/Localizable.strings
  • Loading branch information
samsymons committed Nov 27, 2023
2 parents a48e440 + e705831 commit 2d15390
Show file tree
Hide file tree
Showing 400 changed files with 24,891 additions and 5,645 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/alpha.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,9 @@ jobs:
restore-keys: |
${{ runner.os }}-spm-
# Using Xcode 15 as the alpha build uses iOS 17 APIs
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode_$(<.xcode-version).app/Contents/Developer
run: sudo xcode-select -s /Applications/Xcode_15.0.1.app/Contents/Developer

- name: Prepare fastlane
run: bundle install
Expand Down
34 changes: 13 additions & 21 deletions .github/workflows/end-to-end.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,46 +44,38 @@ jobs:
-derivedDataPath "DerivedData" \
| tee xcodebuild.log
- name: Setup tests
run: bundle install && bundle exec fastlane setup_e2e_tests

- name: Release tests
uses: mobile-dev-inc/action-maestro-cloud@v1.2.3
uses: mobile-dev-inc/action-maestro-cloud@v1.4.1
with:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
app-file: DerivedData/Build/Products/Debug-iphonesimulator/DuckDuckGo.app
workspace: .maestro/release_tests
workspace: .maestro
include-tags: release

- name: Privacy tests
uses: mobile-dev-inc/action-maestro-cloud@v1.2.3
uses: mobile-dev-inc/action-maestro-cloud@v1.4.1
with:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
app-file: DerivedData/Build/Products/Debug-iphonesimulator/DuckDuckGo.app
workspace: .maestro/privacy_tests
workspace: .maestro
include-tags: privacy

- name: Ad Click Detection Flow tests
uses: mobile-dev-inc/action-maestro-cloud@v1.2.3
uses: mobile-dev-inc/action-maestro-cloud@v1.4.1
with:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
app-file: DerivedData/Build/Products/Debug-iphonesimulator/DuckDuckGo.app
workspace: .maestro/privacy_tests
workspace: .maestro
include-tags: adClick

- name: Create Asana task when workflow failed
if: ${{ failure() }}
run: |
curl -s "https://app.asana.com/api/1.0/tasks" \
-H "Authorization: Bearer ${{ secrets.ASANA_ACCESS_TOKEN }}" \
--data ' \
{ \
data: " \
"name": "GH Workflow Failure - End to end tests", \
"workspace": ${{ vars.GH_ASANA_WORKSPACE_ID }}, \
"projects": [ \
${{ vars.GH_ASANA_IOS_APP_PROJECT_ID }} \
], \
"notes" : "The end to end workflow has failed. See https://github.com/duckduckgo/iOS/actions/runs/${{ github.run_id }}", \
" \
}'
--header "Accept: application/json" \
--header "Authorization: Bearer ${{ secrets.ASANA_ACCESS_TOKEN }}" \
--header "Content-Type: application/json" \
--data ' { "data": { "name": "GH Workflow Failure - End to end tests", "workspace": "${{ vars.GH_ASANA_WORKSPACE_ID }}", "projects": [ "${{ vars.GH_ASANA_IOS_APP_PROJECT_ID }}" ], "notes" : "The end to end workflow has failed. See https://github.com/duckduckgo/iOS/actions/runs/${{ github.run_id }}" } }'
- name: Upload logs when workflow failed
uses: actions/upload-artifact@v3
Expand Down
82 changes: 82 additions & 0 deletions .github/workflows/sync-end-to-end.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Sync-End-to-End tests

on:
schedule:
- cron: '0 5 * * *' # run at 5 AM UTC

jobs:
sync-end-to-end-tests:
name: Sync End to end Tests
runs-on: macos-13

steps:
- name: Check out the code
uses: actions/checkout@v3
with:
submodules: recursive

- name: Set cache key hash
run: |
has_only_tags=$(jq '[ .object.pins[].state | has("version") ] | all' DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved)
if [[ "$has_only_tags" == "true" ]]; then
echo "cache_key_hash=${{ hashFiles('DuckDuckGo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved') }}" >> $GITHUB_ENV
else
echo "Package.resolved contains dependencies specified by branch or commit, skipping cache."
fi
- name: Cache SPM
if: env.cache_key_hash
uses: actions/cache@v3
with:
path: DerivedData/SourcePackages
key: ${{ runner.os }}-spm-${{ env.cache_key_hash }}
restore-keys: |
${{ runner.os }}-spm-
- name: Select Xcode
run: sudo xcode-select -s /Applications/Xcode_$(<.xcode-version).app/Contents/Developer

- name: Build for tests
run: |
set -o pipefail && xcodebuild \
-scheme "DuckDuckGo" \
-destination "platform=iOS Simulator,name=iPhone 14,OS=16.4" \
-derivedDataPath "DerivedData" \
| tee xcodebuild.log
- name: Create test account for Sync and return the recovery code
uses: duckduckgo/sync_crypto/action@main
id: sync-recovery-code
with:
debug: true

- name: Sync e2e tests
uses: mobile-dev-inc/[email protected]
with:
api-key: ${{ secrets.MAESTRO_CLOUD_API_KEY }}
app-file: DerivedData/Build/Products/Debug-iphonesimulator/DuckDuckGo.app
workspace: .maestro
include-tags: sync
env: |
CODE=${{ steps.sync-recovery-code.outputs.recovery-code }}
- name: Create Asana task when workflow failed
if: ${{ failure() }}
run: |
curl -s "https://app.asana.com/api/1.0/tasks" \
--header "Accept: application/json" \
--header "Authorization: Bearer ${{ secrets.ASANA_ACCESS_TOKEN }}" \
--header "Content-Type: application/json" \
--data ' { "data": { "name": "GH Workflow Failure - Sync End to end tests", "workspace": "${{ vars.GH_ASANA_WORKSPACE_ID }}", "projects": [ "${{ vars.GH_ASANA_IOS_APP_PROJECT_ID }}" ], "notes" : "The end to end workflow has failed. See https://github.com/duckduckgo/iOS/actions/runs/${{ github.run_id }}" } }'
- name: Upload logs when workflow failed
uses: actions/upload-artifact@v3
if: failure()
with:
name: BuildLogs
path: |
xcodebuild.log
DerivedData/Logs/Test/*.xcresult
retention-days: 7


3 changes: 0 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,6 @@ fastlane/report.xml
fastlane/Preview.html
fastlane/test_output

# Mestro
.maestro/**/shared

# DuckDuckGo

Configuration/ExternalDeveloper.xcconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# yjs_heuristic_no_ad_domain_param_u3_param_included.yaml

appId: com.duckduckgo.mobile.ios
tags:
- adClick

---

# Set up
Expand All @@ -11,14 +12,14 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Let’s Do It!"
index: 0
file: ./shared/onboarding.yaml
file: ../shared/onboarding.yaml

# Load Site
- assertVisible:
id: "searchEntry"
- tapOn:
id: "searchEntry"
- inputText: "https://www.search-company.site/"
- inputText: "https://www.search-company.site/#ad-id-1"
- pressKey: Enter

# Manage onboarding
Expand All @@ -27,9 +28,7 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Got It"
index: 0
file: ./shared/onboarding_browsing.yaml

- assertVisible: "Search engine"
file: ../shared/onboarding_browsing.yaml

# Test Ad1
- assertVisible:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# mjs_heuristic_no_ad_domain_param_dsl_param_included.yaml

appId: com.duckduckgo.mobile.ios
tags:
- adClick

---

# Set up
Expand All @@ -11,14 +12,14 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Let’s Do It!"
index: 0
file: ./shared/onboarding.yaml
file: ../shared/onboarding.yaml

# Load Site
- assertVisible:
id: "searchEntry"
- tapOn:
id: "searchEntry"
- inputText: "https://www.search-company.site/"
- inputText: "https://www.search-company.site/#ad-id-2"
- pressKey: Enter

# Manage onboarding
Expand All @@ -27,9 +28,7 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Got It"
index: 0
file: ./shared/onboarding_browsing.yaml

- assertVisible: "Search engine"
file: ../shared/onboarding_browsing.yaml

# Test Ad2
- assertVisible:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# yjs_heuristic_no_ad_domain_param_but_missing_u3_param.yaml

appId: com.duckduckgo.mobile.ios
tags:
- adClick

---

# Set up
Expand All @@ -11,14 +12,14 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Let’s Do It!"
index: 0
file: ./shared/onboarding.yaml
file: ../shared/onboarding.yaml

# Load Site
- assertVisible:
id: "searchEntry"
- tapOn:
id: "searchEntry"
- inputText: "https://www.search-company.site/"
- inputText: "https://www.search-company.site/#ad-id-3"
- pressKey: Enter

# Manage onboarding
Expand All @@ -27,9 +28,7 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Got It"
index: 0
file: ./shared/onboarding_browsing.yaml

- assertVisible: "Search engine"
file: ../shared/onboarding_browsing.yaml

# Test Ad3
- assertVisible:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# _mjs_heuristic_no_ad_domain_param_but_missing_dsl_param.yaml

appId: com.duckduckgo.mobile.ios
tags:
- adClick

---

# Set up
Expand All @@ -11,14 +12,14 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Let’s Do It!"
index: 0
file: ./shared/onboarding.yaml
file: ../shared/onboarding.yaml

# Load Site
- assertVisible:
id: "searchEntry"
- tapOn:
id: "searchEntry"
- inputText: "https://www.search-company.site/"
- inputText: "https://www.search-company.site/#ad-id-4"
- pressKey: Enter

# Manage onboarding
Expand All @@ -27,15 +28,8 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Got It"
index: 0
file: ./shared/onboarding_browsing.yaml

- assertVisible: "Search engine"
file: ../shared/onboarding_browsing.yaml

# Test Ad4
- swipe:
start: 400, 200
end: 400, 0
duration: 200
- assertVisible:
text: "[Ad 4] Shopping Tab Ad (heuristic)"
- tapOn:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# yjs_heuristic_ad_domain_provided_but_empty_u3_not_needed.yaml

appId: com.duckduckgo.mobile.ios
tags:
- adClick

---

# Set up
Expand All @@ -11,14 +12,14 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Let’s Do It!"
index: 0
file: ./shared/onboarding.yaml
file: ../shared/onboarding.yaml

# Load Site
- assertVisible:
id: "searchEntry"
- tapOn:
id: "searchEntry"
- inputText: "https://www.search-company.site/"
- inputText: "https://www.search-company.site/#ad-id-5"
- pressKey: Enter

# Manage onboarding
Expand All @@ -27,15 +28,8 @@ appId: com.duckduckgo.mobile.ios
visible:
text: "Got It"
index: 0
file: ./shared/onboarding_browsing.yaml

- assertVisible: "Search engine"
file: ../shared/onboarding_browsing.yaml

# Test Ad5
- swipe:
start: 400, 200
end: 400, 0
duration: 200
- assertVisible:
text: "[Ad 5] SERP Ad (heuristic)"
- tapOn:
Expand Down
Loading

0 comments on commit 2d15390

Please sign in to comment.