Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor branch integration test #3166

Draft
wants to merge 74 commits into
base: refactor
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
7ea9161
Add ADR for enable Semantics
dab246 Aug 19, 2024
d3756a4
Enable semantic
dab246 Aug 28, 2024
5c4ba66
Fix cannot click item app grid
dab246 Aug 14, 2024
a225f79
Fix cannot click item in popup menu
dab246 Aug 14, 2024
5921ce0
Fix click event is overridden when clicking menu button in item mailbox
dab246 Aug 14, 2024
8c00708
Fix cannot click item dropdown menu
dab246 Aug 14, 2024
3676462
Fix cannot focus mailbox input field in MailboxCreatorView
dab246 Aug 15, 2024
7f2d493
Fix cannot item in sortBy popup menu
dab246 Aug 15, 2024
45590fa
Fix text field not focus when click in ContactView
dab246 Aug 15, 2024
55351f0
Fix text field not focus when click in RenameMailboxView
dab246 Aug 15, 2024
f69157b
Fix cannot click bottom options (RichText, Attachment, Send, Draft,..)
dab246 Aug 19, 2024
82bc502
Fix composer lost focus when click onetime
dab246 Aug 20, 2024
6dd453f
Fix overlap suggestion view with advanced search view
dab246 Aug 20, 2024
8779ce9
Fix cannot change language in setting view
dab246 Aug 21, 2024
5447d3e
Fix input field lost focus when clicked in Forward View
dab246 Aug 21, 2024
cc5104d
Fix subject field lost focus when clicked in Vacation View
dab246 Aug 21, 2024
5502aa9
Fix advanced search view auto closed when click any field
dab246 Aug 21, 2024
f9f3dcc
Fix duplicate open Contact View
dab246 Aug 21, 2024
5ef3f1a
Fix input field lost focus when clicked in Search Mailbox View
dab246 Aug 21, 2024
7d3fd77
Fix input field lost focus when clicked in Search Email View on Table…
dab246 Aug 21, 2024
2e1cec6
Fix lost subject focus in composer web
dab246 Aug 21, 2024
fc118b4
Remove `dropZoneWidth` & `dropZoneHeight` are not used
dab246 Aug 21, 2024
2082d6b
Fix text color dialog opens twice in composer
dab246 Aug 28, 2024
6bb627a
Fix `Paragraph` dialog & `Order list` dialog open twice and cannot be…
dab246 Aug 28, 2024
240d4aa
Fix `Has attachment` checkbox still lost focus (click on it, but the …
dab246 Aug 28, 2024
a76e500
Fix can not use delete button in keyboard in search bar for folder if…
dab246 Aug 28, 2024
a331d1d
Fix attachment list dialog is closed when click to open pdf
dab246 Aug 28, 2024
acce86c
Fix can not expand sub folder in Mailbox View
dab246 Aug 29, 2024
cf82ec2
Fix Advanced Search dialog cannot closed when click advanced search icon
dab246 Aug 29, 2024
63277fd
create poc selenium test
tddang-linagora Jul 5, 2024
0a1e551
grouping parameterized for TestBase
tddang-linagora Jul 5, 2024
9c62367
Create selenium-maven.yml
tddang-linagora Jul 5, 2024
ac934ee
Config headless test
tddang-linagora Jul 5, 2024
67105c6
Implement robot testing pattern
tddang-linagora Jul 5, 2024
120de81
Disable log trimming
tddang-linagora Jul 5, 2024
1816388
Update Selenium CI config
tddang-linagora Jul 8, 2024
15667e1
Refactored test workflow
tk-nguyen Jul 9, 2024
73dcbac
Added local image build for integration test
tk-nguyen Jul 10, 2024
9fc8940
WIP Add playwright POC
tddang-linagora Jul 15, 2024
0db8bf7
Upgrade code to Flutter 3.22.2
tddang-linagora Jul 17, 2024
20cb1da
Update maven test to Playwright
tddang-linagora Jul 18, 2024
9332aa0
Refactor Playwright test
tddang-linagora Jul 18, 2024
69eefdc
Update login scenario
tddang-linagora Jul 18, 2024
e70e7a5
Added credentials for testing
tk-nguyen Jul 18, 2024
db18f99
Upgrade test to junit 5
tddang-linagora Jul 18, 2024
1eb5444
Implement parallel test
tddang-linagora Jul 18, 2024
fc3a273
Build basic auth login test
tddang-linagora Jul 19, 2024
bdb69ac
Move setup steps to dedicated script
tk-nguyen Jul 24, 2024
d4ab886
Should throw when setup configuration wrongly
quantranhong1999 Jul 23, 2024
48d18aa
Setup TestContainer for E2E testing
quantranhong1999 Jul 24, 2024
a9d93d5
Image tag should match the one built by CI
quantranhong1999 Jul 25, 2024
3c3349e
Rename integration_test directory
hoangdat Aug 6, 2024
17cf3cf
Update correct variable for test container
hoangdat Aug 6, 2024
74e66df
Update working directory with new name
hoangdat Aug 6, 2024
f98bb25
Set viewport size for web app test
hoangdat Aug 6, 2024
087e4de
Disable OIDC with remote server to make test stable
hoangdat Aug 6, 2024
f71177e
Disable Semantic on mobile
dab246 Aug 22, 2024
dcdf85a
[TEMP] enable for appium
hoangdat Aug 23, 2024
3f1afa7
Migrate gradle
tddang-linagora Aug 23, 2024
0b041e7
Add ValueKey to compose email flow
tddang-linagora Aug 26, 2024
a91e455
Upgrade to Flutter master branch
tddang-linagora Aug 28, 2024
34f860d
Update workflows with Flutter master branch
tddang-linagora Aug 28, 2024
9a961e1
Add sample Semantics identifiers
tddang-linagora Aug 29, 2024
7e74adc
Prevent Semantic node missing
tddang-linagora Sep 13, 2024
921091e
Add semantics to from/cc/bcc fields
tddang-linagora Sep 16, 2024
047d22d
Add more semantic entries for composer actions
tddang-linagora Sep 16, 2024
66ed814
Add semantics for text formatting
tddang-linagora Sep 16, 2024
a63812c
Add Semantics to richtext options
tddang-linagora Sep 17, 2024
da8fc31
Add Semantics to email tile and email details
tddang-linagora Sep 20, 2024
a27e3c7
Upgrade flutter_local_notification for Android build
tddang-linagora Sep 20, 2024
c9f5316
Add semantic to basic auth sign in button
tddang-linagora Sep 23, 2024
f7986d8
Show app version on login view
tddang-linagora Sep 23, 2024
5d8a765
Add Semantic to Login version text
tddang-linagora Sep 23, 2024
1f5d09e
Update login view integration test with value key
tddang-linagora Sep 25, 2024
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
4 changes: 2 additions & 2 deletions .github/workflows/analyze-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ jobs:
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.22.2"
channel: "stable"
flutter-version: "3.25.0-0.1.pre"
channel: "master"
cache: true
cache-key: "deps-${{ hashFiles('**/pubspec.lock') }}"
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
name: Build dev binaries

env:
FLUTTER_VERSION: 3.22.2
FLUTTER_VERSION: 3.25.0-0.1.pre
XCODE_VERSION: ^15.0.1

jobs:
Expand All @@ -30,7 +30,7 @@ jobs:
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: "stable"
channel: "master"
cache: true
cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/gh-pages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ jobs:
- name: Setup flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.22.2"
channel: "stable"
flutter-version: "3.25.0-0.1.pre"
channel: "master"
cache: true
cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
Expand Down
55 changes: 55 additions & 0 deletions .github/workflows/integration-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Integration tests

on:
workflow_dispatch:
pull_request:
paths-ignore:
- "**/*.md"

env:
JAVA_VERSION: 22

jobs:
integration_test:
name: Run integration tests
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Java
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: "temurin"
cache: maven
cache-dependency-path: "tmail_integration_test/pom.xml"

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build local image
uses: docker/build-push-action@v6
with:
load: true
tags: tmail-web:integration-test

- uses: browser-actions/setup-chrome@v1
with:
chrome-version: stable
install-chromedriver: true

- uses: browser-actions/setup-firefox@v1
- uses: browser-actions/setup-geckodriver@latest

- name: Configure frontend
env:
FRONTEND_CONFIG: ${{ secrets.FRONTEND_CONFIG }}
FRONTEND_CREDS: ${{ secrets.FRONTEND_CREDS }}
run: ../scripts/setup-desktop-integration-tests.sh
working-directory: tmail_integration_test

- name: Run integration tests
run: ../scripts/run-desktop-integration-tests.sh
working-directory: tmail_integration_test
4 changes: 2 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
name: Release

env:
FLUTTER_VERSION: 3.22.2
FLUTTER_VERSION: 3.25.0-0.1.pre
XCODE_VERSION: ^15.0.1

jobs:
Expand All @@ -33,7 +33,7 @@ jobs:
uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: "stable"
channel: "master"
cache: true
cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,6 @@ app.*.symbols
*.g.dart
messages_*.dart
*.mocks.dart

# end-to-end test
config.properties
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
ARG FLUTTER_VERSION=3.22.2
ARG FLUTTER_VERSION=3.25.0-0.1.pre
# Stage 1 - Install dependencies and build the app
# This matches the flutter version on our CI/CD pipeline on Github
FROM --platform=amd64 ghcr.io/cirruslabs/flutter:${FLUTTER_VERSION} AS build-env

Check warning on line 4 in Dockerfile

View workflow job for this annotation

GitHub Actions / Run integration tests

FROM --platform flag should not use a constant value

FromPlatformFlagConstDisallowed: FROM --platform flag should not use constant value "amd64" More info: https://docs.docker.com/go/dockerfile/rule/from-platform-flag-const-disallowed/

# Set directory to Copy App
WORKDIR /app
Expand All @@ -23,4 +23,4 @@
EXPOSE 80

# Before stating NGinx, re-zip all the content to ensure customizations are propagated
CMD gzip -k -r -f /usr/share/nginx/html/ && nginx -g 'daemon off;'

Check warning on line 26 in Dockerfile

View workflow job for this annotation

GitHub Actions / Run integration tests

JSON arguments recommended for ENTRYPOINT/CMD to prevent unintended behavior related to OS signals

JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals More info: https://docs.docker.com/go/dockerfile/rule/json-args-recommended/
23 changes: 10 additions & 13 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
id "com.google.gms.google-services"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
Expand All @@ -6,11 +13,6 @@ if (localPropertiesFile.exists()) {
}
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
Expand All @@ -23,13 +25,9 @@ if (flutterVersionName == null) {

def flutterMinSdkVersion = localProperties.getProperty('flutter.minSdkVersion')
if (flutterMinSdkVersion == null) {
flutterMinSdkVersion = '19'
flutterMinSdkVersion = '21'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
Expand Down Expand Up @@ -58,8 +56,8 @@ android {

compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}

// Use key information file
Expand All @@ -86,7 +84,6 @@ flutter {

dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.work:work-runtime-ktx:2.7.0'
implementation 'com.android.support:multidex:1.0.3'
implementation 'androidx.window:window:1.0.0'
Expand Down
14 changes: 0 additions & 14 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,17 +1,3 @@
buildscript {
ext.kotlin_version = '1.9.21'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.google.gms:google-services:4.3.10'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.android.tools.build:gradle:7.1.3'
}
}

allprojects {
repositories {
google()
Expand Down
31 changes: 23 additions & 8 deletions android/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,26 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()

def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")

assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}

def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.9.21" apply false
id "com.google.gms.google-services" version "4.3.14" apply false
}

include ":app"
Loading
Loading