Skip to content
Draft
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
50 changes: 45 additions & 5 deletions .github/workflows/android-regression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,18 +95,58 @@ jobs:
- name: Download APK & extract it
run: |
pwd

# Check if devnet is accessible before choosing APK
echo "Checking devnet accessibility for APK selection..."
DEVNET_ACCESSIBLE=false

# Retry logic matching your TypeScript function
for attempt in 1 2 3; do
echo "Devnet check attempt $attempt/3..."
if curl -s --connect-timeout 5 --max-time 10 http://sesh-net.local:1280 >/dev/null 2>&1; then
echo "Devnet is accessible on attempt $attempt"
DEVNET_ACCESSIBLE=true
break
else
echo "Attempt $attempt failed"
if [ $attempt -lt 3 ]; then
echo "Waiting ${attempt}s before retry..."
sleep $attempt
fi
fi
done

if [ "$DEVNET_ACCESSIBLE" = "false" ]; then
echo "Devnet is not accessible after 3 attempts"
fi

# Download and extract APK
wget -q -O session-android.apk.tar.xz ${{ github.event.inputs.APK_URL }}
tar xf session-android.apk.tar.xz
mv session-android-*universal extracted

if ls extracted/*automaticQa.apk; then
mv extracted/*automaticQa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=true" >> $GITHUB_ENV
elif ls extracted/*qa.apk; then
# Choose APK based on devnet accessibility
if ls extracted/*automaticQa.apk 1>/dev/null 2>&1; then
if [ "$DEVNET_ACCESSIBLE" = "true" ]; then
echo "Using AQA build (devnet accessible)"
mv extracted/*automaticQa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=true" >> $GITHUB_ENV
else
echo "AQA build available but devnet not accessible - falling back to regular QA build"
if ls extracted/*qa.apk 1>/dev/null 2>&1; then
mv extracted/*qa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=false" >> $GITHUB_ENV
else
echo "No regular QA build found as fallback"
exit 1
fi
fi
elif ls extracted/*qa.apk 1>/dev/null 2>&1; then
echo "Using regular QA build"
mv extracted/*qa.apk extracted/session-android.apk
echo "IS_AUTOMATIC_QA=false" >> $GITHUB_ENV
else
echo "Error: No .qa APK found (only .qa builds are supported)"
echo "No suitable APK found"
exit 1
fi

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
"prettier": "^3.3.3",
"sharp": "^0.34.2",
"sinon": "^19.0.2",
"ssim.js": "^3.5.0",
"sync-request-curl": "^3.3.3",
"ts-node": "^10.9.1",
"typescript": "^5.6.3",
Expand Down
4 changes: 2 additions & 2 deletions run/screenshots/android/app_disguise.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/conversation_alice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/conversation_bob.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions run/screenshots/android/landingpage_new_account.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions run/screenshots/android/landingpage_restore_account.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/settings_appearance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/settings_conversations.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/settings_notifications.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/settings_privacy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/android/upm_home.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions run/screenshots/ios/app_disguise.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/conversation_alice.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/conversation_bob.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions run/screenshots/ios/landingpage_new_account.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions run/screenshots/ios/landingpage_restore_account.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/settings_appearance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/settings_conversations.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/settings_notifications.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions run/screenshots/ios/settings_privacy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 4 additions & 5 deletions run/test/specs/app_disguise_icons.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ import { USERNAME } from '../../types/testing';
import { AppearanceMenuItem, SelectAppIcon, UserSettings } from './locators/settings';
import { newUser } from './utils/create_account';
import { closeApp, openAppOnPlatformSingleDevice, SupportedPlatformsType } from './utils/open_app';
import { AppDisguisePageScreenshot } from './utils/screenshot_paths';
import { verifyElementScreenshot } from './utils/verify_screenshots';
import { verifyPageScreenshot } from './utils/verify_screenshots';

bothPlatformsIt({
title: 'App disguise icons',
title: 'Check app disguise icon layout',
risk: 'medium',
countOfDevicesNeeded: 1,
testCb: appDisguiseIcons,
Expand All @@ -31,9 +30,9 @@ async function appDisguiseIcons(platform: SupportedPlatformsType, testInfo: Test
await device.clickOnElementAll(new UserSettings(device));
await device.clickOnElementAll(new AppearanceMenuItem(device));
});
await test.step(TestSteps.VERIFY.ELEMENT_SCREENSHOT('app disguise icons'), async () => {
await test.step(TestSteps.VERIFY.SCREENSHOT('app disguise icons'), async () => {
await device.clickOnElementAll(new SelectAppIcon(device));
await verifyElementScreenshot(device, new AppDisguisePageScreenshot(device), testInfo);
await verifyPageScreenshot(device, platform, 'app_disguise', testInfo, 0.99);
});
await test.step(TestSteps.SETUP.CLOSE_APP, async () => {
await closeApp(device);
Expand Down
3 changes: 2 additions & 1 deletion run/test/specs/check_avatar_color.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@ import { isSameColor } from './utils/check_colour';
import { closeApp, SupportedPlatformsType } from './utils/open_app';

bothPlatformsIt({
title: 'Avatar color',
title: 'Check placeholder avatar color',
risk: 'medium',
countOfDevicesNeeded: 2,
testCb: avatarColor,
allureSuites: {
parent: 'Visual Checks',
suite: 'Settings',
},
allureDescription: `Verifies that a user's placeholder avatar color appears the same to a contact`,
});
Expand Down
3 changes: 3 additions & 0 deletions run/test/specs/community_emoji_react.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ bothPlatformsIt({
suite: 'Emoji reacts',
},
allureDescription: 'Verifies that an emoji reaction can be sent and is received in a community',
allureLinks: {
android: 'SES-4608',
},
});

async function sendEmojiReactionCommunity(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
2 changes: 1 addition & 1 deletion run/test/specs/community_tests_image.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ bothPlatformsIt({
risk: 'medium',
countOfDevicesNeeded: 2,
testCb: sendImageCommunity,
allureSuites: { parent: 'Sending Messages', suite: 'Attachments' },
allureSuites: { parent: 'Sending Messages', suite: 'Message types' },
allureDescription: 'Verifies that an image can be sent and received in a community',
});

Expand Down
4 changes: 2 additions & 2 deletions run/test/specs/disappearing_call.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import type { TestInfo } from '@playwright/test';

import { bothPlatformsItSeparate } from '../../types/sessionIt';
import { DISAPPEARING_TIMES } from '../../types/testing';
import { CallButton, NotificationSettings, NotificationSwitch } from './locators/conversation';
import { CallButton, NotificationsModalButton, NotificationSwitch } from './locators/conversation';
import { ContinueButton } from './locators/global';
import { open_Alice1_Bob1_friends } from './state_builder';
import { sleepFor } from './utils';
Expand Down Expand Up @@ -123,7 +123,7 @@ async function disappearingCallMessage1o1Android(
await alice1.clickOnElementById(
'com.android.permissioncontroller:id/permission_allow_foreground_only_button'
);
await alice1.clickOnElementAll(new NotificationSettings(alice1));
await alice1.clickOnElementAll(new NotificationsModalButton(alice1));
await alice1.clickOnElementAll(new NotificationSwitch(alice1));
// Return to conversation
await alice1.navigateBack(false);
Expand Down
8 changes: 7 additions & 1 deletion run/test/specs/group_message_delete.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,16 @@ import { open_Alice1_Bob1_Charlie1_friends_group } from './state_builder';
import { closeApp, SupportedPlatformsType } from './utils/open_app';

bothPlatformsIt({
title: 'Delete message in group',
title: 'Delete message locally in group',
risk: 'high',
countOfDevicesNeeded: 3,
testCb: deleteMessageGroup,
allureSuites: {
parent: 'User Actions',
suite: 'Delete Message',
},
allureDescription:
'Verifies that local deletion in a group does not delete a message for other participants.',
});

async function deleteMessageGroup(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
6 changes: 6 additions & 0 deletions run/test/specs/group_message_document.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ bothPlatformsItSeparate({
android: {
testCb: sendDocumentGroupAndroid,
},
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription:
'Verifies that a PDF can be sent to a group, all members receive the document, and replying to a document works as expected',
});

async function sendDocumentGroupiOS(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
6 changes: 6 additions & 0 deletions run/test/specs/group_message_gif.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ bothPlatformsItSeparate({
android: {
testCb: sendGifGroupAndroid,
},
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription:
'Verifies that a GIF can be sent to a group, all members receive the document, and replying to a document works as expected',
});

async function sendGifGroupiOS(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
6 changes: 6 additions & 0 deletions run/test/specs/group_message_image.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ bothPlatformsItSeparate({
android: {
testCb: sendImageGroupAndroid,
},
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription:
'Verifies that an image can be sent to a group, all members receive the document, and replying to a document works as expected',
});

async function sendImageGroupiOS(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
6 changes: 6 additions & 0 deletions run/test/specs/group_message_link_preview.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ bothPlatformsItSeparate({
android: {
testCb: sendLinkGroupAndroid,
},
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription:
'Verifies that a link with preview can be sent to a group, all members receive the document, and replying to a document works as expected',
});

async function sendLinkGroupiOS(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
4 changes: 4 additions & 0 deletions run/test/specs/group_message_long_text.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ bothPlatformsIt({
risk: 'low',
countOfDevicesNeeded: 3,
testCb: sendLongMessageGroup,
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription: 'Verifies that a long message can be sent to a group',
});

Expand Down
8 changes: 7 additions & 1 deletion run/test/specs/group_message_unsend.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,16 @@ import { open_Alice1_Bob1_Charlie1_friends_group } from './state_builder';
import { closeApp, SupportedPlatformsType } from './utils/open_app';

bothPlatformsIt({
title: 'Unsend message in group',
title: 'Delete message for all in group',
risk: 'high',
countOfDevicesNeeded: 3,
testCb: unsendMessageGroup,
allureSuites: {
parent: 'User Actions',
suite: 'Delete Message',
},
allureDescription:
'Verifies that global deletion in a group deletes a message for every participant.',
});

async function unsendMessageGroup(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
6 changes: 6 additions & 0 deletions run/test/specs/group_message_video.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ bothPlatformsItSeparate({
android: {
testCb: sendVideoGroupAndroid,
},
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription:
'Verifies that a video can be sent to a group, all members receive the document, and replying to a document works as expected',
});

async function sendVideoGroupiOS(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
6 changes: 6 additions & 0 deletions run/test/specs/group_message_voice.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ bothPlatformsIt({
risk: 'high',
countOfDevicesNeeded: 3,
testCb: sendVoiceMessageGroup,
allureSuites: {
parent: 'Sending Messages',
suite: 'Message types',
},
allureDescription:
'Verifies that a voice message can be sent to a group, all members receive the document, and replying to a document works as expected',
});

async function sendVoiceMessageGroup(platform: SupportedPlatformsType, testInfo: TestInfo) {
Expand Down
5 changes: 5 additions & 0 deletions run/test/specs/group_tests_add_contact.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ bothPlatformsIt({
risk: 'high',
testCb: addContactToGroup,
countOfDevicesNeeded: 4,
allureSuites: {
parent: 'Groups',
suite: 'Edit Group',
},
allureDescription: 'Create four accounts, create a group with three, add the fourth member',
});
async function addContactToGroup(platform: SupportedPlatformsType, testInfo: TestInfo) {
const testGroupName = 'Group to test adding contact';
Expand Down
2 changes: 2 additions & 0 deletions run/test/specs/group_tests_change_group_description.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ bothPlatformsItSeparate({
parent: 'Groups',
suite: 'Edit Group',
},
allureDescription:
'Verifies that a group description can be at most 200 chars and that every member can see a valid change.',
});

// Setup
Expand Down
Loading
Loading