Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .github/workflows/_reusable_run_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ on:
run_critical_flows:
type: boolean
required: true
ui_test_tags:
type: string
required: false
default: ''
kalium_ref:
type: string
required: false
Expand Down Expand Up @@ -155,8 +159,14 @@ jobs:

- name: "Test new critical flows"
if: ${{ inputs.run_critical_flows }}
env:
UI_TEST_TAGS: ${{ inputs.ui_test_tags }}
run: |
bundle exec fastlane run_uitests
if [ -n "$UI_TEST_TAGS" ]; then
bundle exec fastlane run_uitests tags:"$UI_TEST_TAGS"
else
bundle exec fastlane run_uitests
fi

- name: Stop Kalium Testservice
if: ${{ always() && inputs.run_critical_flows && inputs.branch != 'release/cycle-4.16' && inputs.branch != 'release/cycle-4.17' }}
Expand Down
22 changes: 22 additions & 0 deletions .github/workflows/critical_flows.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ on:
description: "Testiny test run name: paste the exact run name from Testiny"
required: false
type: string
run_uitests:
description: "Run Critical UITests only"
required: false
default: true
type: boolean
ui_test_scope:
description: "UI test scope"
required: false
default: ""
type: choice
options:
- ""
- calling
- core-messenger
- collaboration
- integration
push:
branches:
- 'develop'
Expand All @@ -26,6 +42,12 @@ jobs:
notify_secret: WIRE_IOS_QA_WEBHOOK
test_dependencies: false
run_critical_flows: true
# Logic:
# - critical + scope => critical,<scope>
# - critical only => critical
# - scope only => <scope>
# - neither => all tests (empty tag filter)
ui_test_tags: ${{ inputs.run_uitests && inputs.ui_test_scope != '' && format('critical,{0}', inputs.ui_test_scope) || inputs.run_uitests && 'critical' || inputs.ui_test_scope }}
testiny_run_name: ${{ inputs.testiny_run_name }}
notify: always
timeout_minutes: ${{ github.event_name == 'workflow_dispatch' && 120 || 90 }}
Expand Down
10 changes: 4 additions & 6 deletions .github/workflows/test_develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,14 @@ concurrency:

jobs:
trigger_tests:
strategy:
fail-fast: false # prevents a branch to cancel other branches on failure
matrix:
branch: [develop, release/cycle-4.16, release/cycle-4.19, release/cycle-4.20] # List other branches here
if: ${{ github.ref == 'refs/heads/develop' }}
uses: ./.github/workflows/_reusable_run_tests.yml
with:
all: true
branch: ${{ matrix.branch }}
all: false
branch: develop
notify_secret: WIRE_IOS_NIGHTLY_WEBHOOK
run_critical_flows: true
ui_test_tags: "!critical"
notify: always
timeout_minutes: 120
secrets: inherit
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ public extension WireNetwork.APIVersion {
self = .v14
case .v15:
self = .v15
case .v16:
self = .v16
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ public struct AccountsAPIBuilder {
AccountsAPIV14(apiService: apiService)
case .v15:
AccountsAPIV15(apiService: apiService)
case .v16:
AccountsAPIV16(apiService: apiService)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class AccountsAPIV15: AccountsAPIV14 {
class AccountsAPIV15: AccountsAPIV14 {
override var apiVersion: APIVersion { .v15 }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class AccountsAPIV16: AccountsAPIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ public struct AuthenticationAPIBuilder {
AuthenticationAPIV14(networkService: networkService)
case .v15:
AuthenticationAPIV15(networkService: networkService)
case .v16:
AuthenticationAPIV16(networkService: networkService)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
//

import Foundation

Check warning on line 20 in WireNetwork/Sources/WireNetwork/APIs/Rest/AuthenticationAPI/AuthenticationAPIV15.swift

View workflow job for this annotation

GitHub Actions / Test Results

Non-final class 'AuthenticationAPIV15' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode

Non-final class 'AuthenticationAPIV15' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
final class AuthenticationAPIV15: AuthenticationAPIV14 {
class AuthenticationAPIV15: AuthenticationAPIV14 {

override var apiVersion: APIVersion { .v15 }

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class AuthenticationAPIV16: AuthenticationAPIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ public struct ConnectionsAPIBuilder {
ConnectionsAPIV14(apiService: apiService)
case .v15:
ConnectionsAPIV15(apiService: apiService)
case .v16:
ConnectionsAPIV16(apiService: apiService)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class ConnectionsAPIV15: ConnectionsAPIV14 {
class ConnectionsAPIV15: ConnectionsAPIV14 {
override var apiVersion: APIVersion { .v15 }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class ConnectionsAPIV16: ConnectionsAPIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ public struct ConversationsAPIBuilder {
ConversationsAPIV14(apiService: apiService)
case .v15:
ConversationsAPIV15(apiService: apiService)
case .v16:
ConversationsAPIV16(apiService: apiService)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class ConversationsAPIV15: ConversationsAPIV14 {
class ConversationsAPIV15: ConversationsAPIV14 {
override var apiVersion: APIVersion { .v15 }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class ConversationsAPIV16: ConversationsAPIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ public struct FeatureConfigsAPIBuilder {
FeatureConfigsAPIV14(apiService: apiService)
case .v15:
FeatureConfigsAPIV15(apiService: apiService)
case .v16:
FeatureConfigsAPIV16(apiService: apiService)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class FeatureConfigsAPIV15: FeatureConfigsAPIV14 {
class FeatureConfigsAPIV15: FeatureConfigsAPIV14 {
override var apiVersion: APIVersion { .v15 }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class FeatureConfigsAPIV16: FeatureConfigsAPIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ public struct MLSAPIBuilder {
MLSAPIV14(apiService: apiService)
case .v15:
MLSAPIV15(apiService: apiService)
case .v16:
MLSAPIV16(apiService: apiService)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class MLSAPIV15: MLSAPIV14 {
class MLSAPIV15: MLSAPIV14 {
override var apiVersion: APIVersion { .v15 }
}
25 changes: 25 additions & 0 deletions WireNetwork/Sources/WireNetwork/APIs/Rest/MLSAPI/MLSAPIV16.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class MLSAPIV16: MLSAPIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ public struct PushChannelV2APIBuilder {
PushChannelV2APIV14(pushChannelService: pushChannelService)
case .v15:
PushChannelV2APIV15(pushChannelService: pushChannelService)
case .v16:
PushChannelV2APIV16(pushChannelService: pushChannelService)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class PushChannelV2APIV15: PushChannelV2APIV14 {
class PushChannelV2APIV15: PushChannelV2APIV14 {
override var apiVersion: APIVersion { .v15 }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//
// Wire
// Copyright (C) 2026 Wire Swiss GmbH
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see http://www.gnu.org/licenses/.
//

final class PushChannelV2APIV16: PushChannelV2APIV15 {

override var apiVersion: APIVersion {
.v16
}

}
Loading
Loading