mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: add iOS integration test CI (#4822)
This commit is contained in:
parent
2ec6250ddd
commit
b05897d3ab
126
.github/workflows/android_ci.yaml
vendored
Normal file
126
.github/workflows/android_ci.yaml
vendored
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
# name: Android CI
|
||||||
|
|
||||||
|
# on:
|
||||||
|
# push:
|
||||||
|
# branches:
|
||||||
|
# - "main"
|
||||||
|
# paths:
|
||||||
|
# - ".github/workflows/mobile_ci.yaml"
|
||||||
|
# - "frontend/**"
|
||||||
|
# - "!frontend/appflowy_tauri/**"
|
||||||
|
|
||||||
|
# pull_request:
|
||||||
|
# branches:
|
||||||
|
# - "main"
|
||||||
|
# paths:
|
||||||
|
# - ".github/workflows/mobile_ci.yaml"
|
||||||
|
# - "frontend/**"
|
||||||
|
# - "!frontend/appflowy_tauri/**"
|
||||||
|
|
||||||
|
# env:
|
||||||
|
# CARGO_TERM_COLOR: always
|
||||||
|
# FLUTTER_VERSION: "3.19.0"
|
||||||
|
# RUST_TOOLCHAIN: "1.75"
|
||||||
|
# CARGO_MAKE_VERSION: "0.36.6"
|
||||||
|
|
||||||
|
# concurrency:
|
||||||
|
# group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
# cancel-in-progress: true
|
||||||
|
|
||||||
|
# jobs:
|
||||||
|
# build:
|
||||||
|
# if: github.event.pull_request.draft != true
|
||||||
|
# strategy:
|
||||||
|
# fail-fast: true
|
||||||
|
# matrix:
|
||||||
|
# os: [macos-14]
|
||||||
|
# runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
# steps:
|
||||||
|
# - name: Check storage space
|
||||||
|
# run: df -h
|
||||||
|
|
||||||
|
# # the following step is required to avoid running out of space
|
||||||
|
# - name: Maximize build space
|
||||||
|
# if: matrix.os == 'ubuntu-latest'
|
||||||
|
# run: |
|
||||||
|
# sudo rm -rf /usr/share/dotnet
|
||||||
|
# sudo rm -rf /opt/ghc
|
||||||
|
# sudo rm -rf "/usr/local/share/boost"
|
||||||
|
# sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
||||||
|
# sudo docker image prune --all --force
|
||||||
|
# sudo rm -rf /opt/hostedtoolcache/codeQL
|
||||||
|
# sudo rm -rf ${GITHUB_WORKSPACE}/.git
|
||||||
|
# sudo rm -rf $ANDROID_HOME/ndk
|
||||||
|
|
||||||
|
# - name: Check storage space
|
||||||
|
# run: df -h
|
||||||
|
|
||||||
|
# - name: Checkout source code
|
||||||
|
# uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# - uses: actions/setup-java@v4
|
||||||
|
# with:
|
||||||
|
# distribution: temurin
|
||||||
|
# java-version: 11
|
||||||
|
|
||||||
|
# - name: Install Rust toolchain
|
||||||
|
# id: rust_toolchain
|
||||||
|
# uses: actions-rs/toolchain@v1
|
||||||
|
# with:
|
||||||
|
# toolchain: ${{ env.RUST_TOOLCHAIN }}
|
||||||
|
# override: true
|
||||||
|
# profile: minimal
|
||||||
|
|
||||||
|
# - name: Install flutter
|
||||||
|
# id: flutter
|
||||||
|
# uses: subosito/flutter-action@v2
|
||||||
|
# with:
|
||||||
|
# channel: "stable"
|
||||||
|
# flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
|
|
||||||
|
# - uses: gradle/gradle-build-action@v3
|
||||||
|
# with:
|
||||||
|
# gradle-version: 7.4.2
|
||||||
|
|
||||||
|
# - uses: davidB/rust-cargo-make@v1
|
||||||
|
# with:
|
||||||
|
# version: "0.36.6"
|
||||||
|
|
||||||
|
# - name: Install prerequisites
|
||||||
|
# working-directory: frontend
|
||||||
|
# run: |
|
||||||
|
# rustup target install aarch64-linux-android
|
||||||
|
# rustup target install x86_64-linux-android
|
||||||
|
# cargo install --force duckscript_cli
|
||||||
|
# cargo install cargo-ndk
|
||||||
|
# if [ "$RUNNER_OS" == "Linux" ]; then
|
||||||
|
# sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
|
||||||
|
# sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
|
||||||
|
# sudo apt-get update
|
||||||
|
# sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
|
||||||
|
# sudo apt-get install keybinder-3.0 libnotify-dev
|
||||||
|
# sudo apt-get install gcc-multilib
|
||||||
|
# elif [ "$RUNNER_OS" == "Windows" ]; then
|
||||||
|
# vcpkg integrate install
|
||||||
|
# elif [ "$RUNNER_OS" == "macOS" ]; then
|
||||||
|
# echo 'do nothing'
|
||||||
|
# fi
|
||||||
|
# cargo make appflowy-flutter-deps-tools
|
||||||
|
# shell: bash
|
||||||
|
|
||||||
|
# - name: Build AppFlowy
|
||||||
|
# working-directory: frontend
|
||||||
|
# run: |
|
||||||
|
# cargo make --profile development-android appflowy-android-dev-ci
|
||||||
|
|
||||||
|
|
||||||
|
# - name: Run integration tests
|
||||||
|
# # https://github.com/ReactiveCircus/android-emulator-runner
|
||||||
|
# uses: reactivecircus/android-emulator-runner@v2
|
||||||
|
# with:
|
||||||
|
# api-level: 32
|
||||||
|
# arch: arm64-v8a
|
||||||
|
# disk-size: 2048M
|
||||||
|
# working-directory: frontend/appflowy_flutter
|
||||||
|
# script: flutter test integration_test/runner.dart
|
91
.github/workflows/ios_ci.yaml
vendored
Normal file
91
.github/workflows/ios_ci.yaml
vendored
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
name: iOS CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
paths:
|
||||||
|
- ".github/workflows/mobile_ci.yaml"
|
||||||
|
- "frontend/**"
|
||||||
|
- "!frontend/appflowy_tauri/**"
|
||||||
|
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- "main"
|
||||||
|
paths:
|
||||||
|
- ".github/workflows/mobile_ci.yaml"
|
||||||
|
- "frontend/**"
|
||||||
|
- "!frontend/appflowy_tauri/**"
|
||||||
|
|
||||||
|
env:
|
||||||
|
FLUTTER_VERSION: "3.19.0"
|
||||||
|
RUST_TOOLCHAIN: "1.75"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
if: github.event.pull_request.draft != true
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
matrix:
|
||||||
|
os: [macos-14]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout source code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust toolchain
|
||||||
|
id: rust_toolchain
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: ${{ env.RUST_TOOLCHAIN }}
|
||||||
|
target: aarch64-apple-ios-sim
|
||||||
|
override: true
|
||||||
|
profile: minimal
|
||||||
|
|
||||||
|
- name: Install flutter
|
||||||
|
id: flutter
|
||||||
|
uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
channel: "stable"
|
||||||
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
|
cache: true
|
||||||
|
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
|
with:
|
||||||
|
prefix-key: ${{ matrix.os }}
|
||||||
|
workspaces: |
|
||||||
|
frontend/rust-lib
|
||||||
|
|
||||||
|
- uses: davidB/rust-cargo-make@v1
|
||||||
|
with:
|
||||||
|
version: "0.36.6"
|
||||||
|
|
||||||
|
- name: Install prerequisites
|
||||||
|
working-directory: frontend
|
||||||
|
run: |
|
||||||
|
rustup target install aarch64-apple-ios-sim
|
||||||
|
cargo install --force duckscript_cli
|
||||||
|
cargo install cargo-lipo
|
||||||
|
cargo make appflowy-flutter-deps-tools
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Build AppFlowy
|
||||||
|
working-directory: frontend
|
||||||
|
run: |
|
||||||
|
cargo make --profile development-ios-arm64-sim appflowy-core-dev-ios
|
||||||
|
cargo make --profile development-ios-arm64-sim code_generation
|
||||||
|
|
||||||
|
- uses: futureware-tech/simulator-action@v3
|
||||||
|
id: simulator-action
|
||||||
|
with:
|
||||||
|
model: 'iPhone 15'
|
||||||
|
shutdown_after_job: false
|
||||||
|
|
||||||
|
- name: Run integration tests
|
||||||
|
working-directory: frontend/appflowy_flutter
|
||||||
|
run: flutter test integration_test/runner.dart -d ${{ steps.simulator-action.outputs.udid }}
|
117
.github/workflows/mobile_ci.yaml
vendored
117
.github/workflows/mobile_ci.yaml
vendored
@ -1,117 +0,0 @@
|
|||||||
name: Mobile-CI
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- "main"
|
|
||||||
paths:
|
|
||||||
- ".github/workflows/mobile_ci.yaml"
|
|
||||||
- "frontend/**"
|
|
||||||
- "!frontend/appflowy_tauri/**"
|
|
||||||
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- "main"
|
|
||||||
paths:
|
|
||||||
- ".github/workflows/mobile_ci.yaml"
|
|
||||||
- "frontend/**"
|
|
||||||
- "!frontend/appflowy_tauri/**"
|
|
||||||
|
|
||||||
env:
|
|
||||||
FLUTTER_VERSION: "3.19.0"
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
if: github.event.pull_request.draft != true
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest]
|
|
||||||
include:
|
|
||||||
- os: ubuntu-latest
|
|
||||||
target: aarch64-linux-android
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Check storage space
|
|
||||||
run: df -h
|
|
||||||
|
|
||||||
- name: Maximize build space
|
|
||||||
uses: easimon/maximize-build-space@master
|
|
||||||
with:
|
|
||||||
root-reserve-mb: 2048
|
|
||||||
swap-size-mb: 1024
|
|
||||||
remove-dotnet: 'true'
|
|
||||||
|
|
||||||
# the following step is required to avoid running out of space
|
|
||||||
- name: Maximize build space
|
|
||||||
if: matrix.os == 'ubuntu-latest'
|
|
||||||
run: |
|
|
||||||
sudo rm -rf /usr/share/dotnet
|
|
||||||
sudo rm -rf /opt/ghc
|
|
||||||
sudo rm -rf "/usr/local/share/boost"
|
|
||||||
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
||||||
sudo docker image prune --all --force
|
|
||||||
sudo rm -rf /opt/hostedtoolcache/codeQL
|
|
||||||
sudo rm -rf ${GITHUB_WORKSPACE}/.git
|
|
||||||
sudo rm -rf $ANDROID_HOME/ndk
|
|
||||||
|
|
||||||
- name: Check storage space
|
|
||||||
run: df -h
|
|
||||||
|
|
||||||
- name: Checkout source code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Install flutter
|
|
||||||
id: flutter
|
|
||||||
uses: subosito/flutter-action@v2
|
|
||||||
with:
|
|
||||||
channel: "stable"
|
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
||||||
|
|
||||||
- uses: nttld/setup-ndk@v1
|
|
||||||
id: setup-ndk
|
|
||||||
with:
|
|
||||||
ndk-version: "r24"
|
|
||||||
add-to-path: true
|
|
||||||
|
|
||||||
- uses: gradle/gradle-build-action@v3
|
|
||||||
with:
|
|
||||||
gradle-version: 7.6.3
|
|
||||||
|
|
||||||
- uses: davidB/rust-cargo-make@v1
|
|
||||||
with:
|
|
||||||
version: "0.36.6"
|
|
||||||
|
|
||||||
- name: Install prerequisites
|
|
||||||
working-directory: frontend
|
|
||||||
run: |
|
|
||||||
rustup target install aarch64-linux-android
|
|
||||||
rustup target install x86_64-linux-android
|
|
||||||
cargo install --force duckscript_cli
|
|
||||||
cargo install cargo-ndk
|
|
||||||
if [ "$RUNNER_OS" == "Linux" ]; then
|
|
||||||
sudo wget -qO /etc/apt/trusted.gpg.d/dart_linux_signing_key.asc https://dl-ssl.google.com/linux/linux_signing_key.pub
|
|
||||||
sudo wget -qO /etc/apt/sources.list.d/dart_stable.list https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y dart curl build-essential libssl-dev clang cmake ninja-build pkg-config libgtk-3-dev
|
|
||||||
sudo apt-get install keybinder-3.0 libnotify-dev
|
|
||||||
sudo apt-get install gcc-multilib
|
|
||||||
elif [ "$RUNNER_OS" == "Windows" ]; then
|
|
||||||
vcpkg integrate install
|
|
||||||
elif [ "$RUNNER_OS" == "macOS" ]; then
|
|
||||||
echo 'do nothing'
|
|
||||||
fi
|
|
||||||
cargo make appflowy-flutter-deps-tools
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: Build AppFlowy
|
|
||||||
working-directory: frontend
|
|
||||||
env:
|
|
||||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
|
||||||
run: |
|
|
||||||
cargo make --profile development-android appflowy-android-dev-ci
|
|
@ -16,9 +16,9 @@ import 'package:flowy_infra/uuid.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import '../util/dir.dart';
|
import '../shared/dir.dart';
|
||||||
import '../util/mock/mock_file_picker.dart';
|
import '../shared/mock/mock_file_picker.dart';
|
||||||
import '../util/util.dart';
|
import '../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
@ -11,10 +11,11 @@ import 'package:appflowy/workspace/presentation/settings/widgets/settings_user_v
|
|||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra/uuid.dart';
|
import 'package:flowy_infra/uuid.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import '../util/mock/mock_file_picker.dart';
|
import 'package:path/path.dart' as p;
|
||||||
import '../util/util.dart';
|
|
||||||
|
import '../shared/mock/mock_file_picker.dart';
|
||||||
|
import '../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
@ -47,13 +48,13 @@ void main() {
|
|||||||
tester.expectToSeeGoogleLoginButton();
|
tester.expectToSeeGoogleLoginButton();
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('sign in as annoymous', (tester) async {
|
testWidgets('sign in as anonymous', (tester) async {
|
||||||
await tester.initializeAppFlowy(
|
await tester.initializeAppFlowy(
|
||||||
cloudType: AuthenticatorType.appflowyCloudSelfHost,
|
cloudType: AuthenticatorType.appflowyCloudSelfHost,
|
||||||
);
|
);
|
||||||
await tester.tapSignInAsGuest();
|
await tester.tapSignInAsGuest();
|
||||||
|
|
||||||
// should not see the sync setting page when sign in as annoymous
|
// should not see the sync setting page when sign in as anonymous
|
||||||
await tester.openSettings();
|
await tester.openSettings();
|
||||||
await tester.openSettingsPage(SettingsPage.user);
|
await tester.openSettingsPage(SettingsPage.user);
|
||||||
tester.expectToSeeGoogleLoginButton();
|
tester.expectToSeeGoogleLoginButton();
|
||||||
|
@ -23,11 +23,11 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../shared/database_test_op.dart';
|
||||||
import '../util/dir.dart';
|
import '../shared/dir.dart';
|
||||||
import '../util/emoji.dart';
|
import '../shared/emoji.dart';
|
||||||
import '../util/mock/mock_file_picker.dart';
|
import '../shared/mock/mock_file_picker.dart';
|
||||||
import '../util/util.dart';
|
import '../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
@ -16,9 +16,9 @@ import 'package:flowy_infra/uuid.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import '../util/dir.dart';
|
import '../shared/dir.dart';
|
||||||
import '../util/mock/mock_file_picker.dart';
|
import '../shared/mock/mock_file_picker.dart';
|
||||||
import '../util/util.dart';
|
import '../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
@ -2,7 +2,7 @@ import 'package:appflowy/env/cloud_env.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../shared/util.dart';
|
||||||
|
|
||||||
// This test is meaningless, just for preventing the CI from failing.
|
// This test is meaningless, just for preventing the CI from failing.
|
||||||
void main() {
|
void main() {
|
||||||
|
@ -6,7 +6,8 @@ import 'package:appflowy/workspace/presentation/settings/widgets/settings_user_v
|
|||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import '../util/util.dart';
|
|
||||||
|
import '../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
@ -35,11 +36,11 @@ void main() {
|
|||||||
tester.expectToSeeGoogleLoginButton();
|
tester.expectToSeeGoogleLoginButton();
|
||||||
});
|
});
|
||||||
|
|
||||||
testWidgets('sign in as annoymous', (tester) async {
|
testWidgets('sign in as anonymous', (tester) async {
|
||||||
await tester.initializeAppFlowy(cloudType: AuthenticatorType.supabase);
|
await tester.initializeAppFlowy(cloudType: AuthenticatorType.supabase);
|
||||||
await tester.tapSignInAsGuest();
|
await tester.tapSignInAsGuest();
|
||||||
|
|
||||||
// should not see the sync setting page when sign in as annoymous
|
// should not see the sync setting page when sign in as anonymous
|
||||||
await tester.openSettings();
|
await tester.openSettings();
|
||||||
await tester.openSettingsPage(SettingsPage.user);
|
await tester.openSettingsPage(SettingsPage.user);
|
||||||
tester.expectToSeeGoogleLoginButton();
|
tester.expectToSeeGoogleLoginButton();
|
||||||
|
@ -18,11 +18,11 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import '../util/database_test_op.dart';
|
import '../shared/database_test_op.dart';
|
||||||
import '../util/dir.dart';
|
import '../shared/dir.dart';
|
||||||
import '../util/emoji.dart';
|
import '../shared/emoji.dart';
|
||||||
import '../util/mock/mock_file_picker.dart';
|
import '../shared/mock/mock_file_picker.dart';
|
||||||
import '../util/util.dart';
|
import '../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
const defaultFirstCardName = 'Card 1';
|
const defaultFirstCardName = 'Card 1';
|
||||||
const defaultLastCardName = 'Card 3';
|
const defaultLastCardName = 'Card 3';
|
@ -6,7 +6,7 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:appflowy_board/appflowy_board.dart';
|
import 'package:appflowy_board/appflowy_board.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,8 +7,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,8 +7,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,8 +5,8 @@ import 'package:flowy_infra_ui/style_widget/icon_button.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -4,8 +4,8 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -4,8 +4,8 @@ import 'package:appflowy_backend/protobuf/flowy-folder/view.pbenum.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -8,8 +8,8 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -4,7 +4,7 @@ import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pbenum.
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,8 +5,8 @@ import 'package:appflowy_backend/protobuf/flowy-folder/protobuf.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,9 +7,9 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/emoji.dart';
|
import '../../shared/emoji.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -2,8 +2,8 @@ import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -3,8 +3,8 @@ import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -2,7 +2,7 @@ import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pbenum.
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -2,7 +2,7 @@ import 'package:appflowy_backend/protobuf/flowy-database2/field_entities.pbenum.
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -3,8 +3,8 @@ import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,8 +5,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/keyboard.dart';
|
import '../../shared/keyboard.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,7 +7,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -8,7 +8,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -4,7 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -1,14 +1,13 @@
|
|||||||
import 'package:flutter/services.dart';
|
|
||||||
|
|
||||||
import 'package:appflowy/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart';
|
import 'package:appflowy/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart';
|
||||||
import 'package:appflowy/plugins/inline_actions/widgets/inline_actions_handler.dart';
|
import 'package:appflowy/plugins/inline_actions/widgets/inline_actions_handler.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
|
import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
|
||||||
import 'package:flowy_infra/uuid.dart';
|
import 'package:flowy_infra/uuid.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/keyboard.dart';
|
import '../../shared/keyboard.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -2,7 +2,7 @@ import 'package:appflowy_editor/appflowy_editor.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,8 +7,8 @@ import 'package:flutter_emoji_mart/flutter_emoji_mart.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/emoji.dart';
|
import '../../shared/emoji.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -1,9 +1,9 @@
|
|||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_skeleton/text.dart';
|
|
||||||
import 'package:appflowy/plugins/inline_actions/widgets/inline_actions_handler.dart';
|
|
||||||
import 'package:appflowy/plugins/database/board/presentation/board_page.dart';
|
import 'package:appflowy/plugins/database/board/presentation/board_page.dart';
|
||||||
import 'package:appflowy/plugins/database/calendar/presentation/calendar_page.dart';
|
import 'package:appflowy/plugins/database/calendar/presentation/calendar_page.dart';
|
||||||
import 'package:appflowy/plugins/database/grid/presentation/grid_page.dart';
|
import 'package:appflowy/plugins/database/grid/presentation/grid_page.dart';
|
||||||
|
import 'package:appflowy/plugins/database/widgets/cell/editable_cell_skeleton/text.dart';
|
||||||
|
import 'package:appflowy/plugins/inline_actions/widgets/inline_actions_handler.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
|
import 'package:appflowy/workspace/presentation/home/menu/view/view_item.dart';
|
||||||
import 'package:appflowy_backend/protobuf/flowy-folder/protobuf.dart';
|
import 'package:appflowy_backend/protobuf/flowy-folder/protobuf.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
@ -12,7 +12,7 @@ import 'package:flowy_infra/uuid.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -22,8 +22,8 @@ import 'package:path/path.dart' as p;
|
|||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:run_with_network_images/run_with_network_images.dart';
|
import 'package:run_with_network_images/run_with_network_images.dart';
|
||||||
|
|
||||||
import '../util/mock/mock_file_picker.dart';
|
import '../../shared/mock/mock_file_picker.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
@ -5,7 +5,7 @@ import 'package:flowy_infra_ui/widget/error_page.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,7 +5,7 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
|
import 'package:url_launcher_platform_interface/url_launcher_platform_interface.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,7 +7,7 @@ import 'package:flowy_infra_ui/flowy_infra_ui.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
const String heading1 = "Heading 1";
|
const String heading1 = "Heading 1";
|
||||||
const String heading2 = "Heading 2";
|
const String heading2 = "Heading 2";
|
@ -7,7 +7,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,7 +5,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
@ -4,8 +4,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/database_test_op.dart';
|
import '../../shared/database_test_op.dart';
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -1,5 +1,3 @@
|
|||||||
import 'package:flutter/services.dart';
|
|
||||||
|
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/plugins/document/presentation/editor_plugins/mention/mention_block.dart';
|
import 'package:appflowy/plugins/document/presentation/editor_plugins/mention/mention_block.dart';
|
||||||
import 'package:appflowy/user/application/user_settings_service.dart';
|
import 'package:appflowy/user/application/user_settings_service.dart';
|
||||||
@ -11,14 +9,15 @@ import 'package:appflowy_editor/appflowy_editor.dart';
|
|||||||
import 'package:calendar_view/calendar_view.dart';
|
import 'package:calendar_view/calendar_view.dart';
|
||||||
import 'package:easy_localization/easy_localization.dart';
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
import 'package:flowy_infra_ui/style_widget/text_field.dart';
|
import 'package:flowy_infra_ui/style_widget/text_field.dart';
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/base.dart';
|
import '../../shared/base.dart';
|
||||||
import '../util/common_operations.dart';
|
import '../../shared/common_operations.dart';
|
||||||
import '../util/editor_test_operations.dart';
|
import '../../shared/editor_test_operations.dart';
|
||||||
import '../util/expectation.dart';
|
import '../../shared/expectation.dart';
|
||||||
import '../util/keyboard.dart';
|
import '../../shared/keyboard.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -1,10 +1,11 @@
|
|||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:appflowy/workspace/presentation/settings/widgets/settings_language_view.dart';
|
|
||||||
import 'package:integration_test/integration_test.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
|
||||||
import '../util/util.dart';
|
|
||||||
import 'package:appflowy/workspace/application/settings/prelude.dart';
|
import 'package:appflowy/workspace/application/settings/prelude.dart';
|
||||||
|
import 'package:appflowy/workspace/presentation/settings/widgets/settings_language_view.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -6,9 +6,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/base.dart';
|
import '../../shared/keyboard.dart';
|
||||||
import '../util/common_operations.dart';
|
import '../../shared/util.dart';
|
||||||
import '../util/keyboard.dart';
|
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -6,7 +6,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -6,9 +6,9 @@ import 'package:flowy_infra_ui/style_widget/hover.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/base.dart';
|
import '../../shared/base.dart';
|
||||||
import '../util/common_operations.dart';
|
import '../../shared/common_operations.dart';
|
||||||
import '../util/expectation.dart';
|
import '../../shared/expectation.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -2,9 +2,9 @@ import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/base.dart';
|
import '../../shared/base.dart';
|
||||||
import '../util/common_operations.dart';
|
import '../../shared/common_operations.dart';
|
||||||
import '../util/expectation.dart';
|
import '../../shared/expectation.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -12,7 +12,7 @@ import 'package:easy_localization/easy_localization.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import '../util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -1,7 +1,8 @@
|
|||||||
import 'package:appflowy_board/appflowy_board.dart';
|
import 'package:appflowy_board/appflowy_board.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'util/util.dart';
|
|
||||||
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
/// Integration tests for an empty board. The [TestWorkspaceService] will load
|
/// Integration tests for an empty board. The [TestWorkspaceService] will load
|
||||||
/// a workspace from an empty board `assets/test/workspaces/board.zip` for all
|
/// a workspace from an empty board `assets/test/workspaces/board.zip` for all
|
@ -1,4 +1,5 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:appflowy/workspace/presentation/settings/widgets/emoji_picker/emoji_picker.dart';
|
import 'package:appflowy/workspace/presentation/settings/widgets/emoji_picker/emoji_picker.dart';
|
||||||
import 'package:appflowy_editor/appflowy_editor.dart';
|
import 'package:appflowy_editor/appflowy_editor.dart';
|
||||||
import 'package:appflowy_editor/src/editor/editor_component/service/editor.dart';
|
import 'package:appflowy_editor/src/editor/editor_component/service/editor.dart';
|
||||||
@ -6,8 +7,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/keyboard.dart';
|
import '../../shared/keyboard.dart';
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -3,8 +3,9 @@ import 'package:appflowy_editor/appflowy_editor.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'util/keyboard.dart';
|
|
||||||
import 'util/util.dart';
|
import '../../shared/keyboard.dart';
|
||||||
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
/// Integration tests for an empty document. The [TestWorkspaceService] will load a workspace from an empty document `assets/test/workspaces/empty_document.zip` for all tests.
|
/// Integration tests for an empty document. The [TestWorkspaceService] will load a workspace from an empty document `assets/test/workspaces/empty_document.zip` for all tests.
|
||||||
///
|
///
|
@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
// This test is meaningless, just for preventing the CI from failing.
|
// This test is meaningless, just for preventing the CI from failing.
|
||||||
void main() {
|
void main() {
|
@ -1,4 +1,5 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:appflowy/generated/locale_keys.g.dart';
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
import 'package:appflowy/workspace/application/settings/prelude.dart';
|
import 'package:appflowy/workspace/application/settings/prelude.dart';
|
||||||
import 'package:appflowy/workspace/presentation/home/menu/sidebar/sidebar.dart';
|
import 'package:appflowy/workspace/presentation/home/menu/sidebar/sidebar.dart';
|
||||||
@ -8,8 +9,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/keyboard.dart';
|
import '../../shared/keyboard.dart';
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -3,11 +3,11 @@ import 'dart:io';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/mock/mock_file_picker.dart';
|
|
||||||
import 'util/util.dart';
|
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
|
import '../../shared/mock/mock_file_picker.dart';
|
||||||
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
@ -2,7 +2,7 @@ import 'package:appflowy/workspace/presentation/settings/widgets/settings_langua
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,8 +7,8 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/mock/mock_openai_repository.dart';
|
import '../../shared/mock/mock_openai_repository.dart';
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -5,8 +5,8 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
import 'util/mock/mock_file_picker.dart';
|
import '../../shared/mock/mock_file_picker.dart';
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -7,8 +7,8 @@ import 'package:flutter_test/flutter_test.dart';
|
|||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
import 'util/mock/mock_file_picker.dart';
|
import '../../shared/mock/mock_file_picker.dart';
|
||||||
import 'util/util.dart';
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
@ -8,10 +8,10 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'util/base.dart';
|
import '../../shared/base.dart';
|
||||||
import 'util/common_operations.dart';
|
import '../../shared/common_operations.dart';
|
||||||
import 'util/expectation.dart';
|
import '../../shared/expectation.dart';
|
||||||
import 'util/keyboard.dart';
|
import '../../shared/keyboard.dart';
|
||||||
|
|
||||||
const _documentName = 'First Doc';
|
const _documentName = 'First Doc';
|
||||||
const _documentTwoName = 'Second Doc';
|
const _documentTwoName = 'Second Doc';
|
@ -0,0 +1,68 @@
|
|||||||
|
import 'desktop/uncategorized/appearance_settings_test.dart' as appearance_test_runner;
|
||||||
|
import 'desktop/board/board_test_runner.dart' as board_test_runner;
|
||||||
|
import 'desktop/database/database_calendar_test.dart' as database_calendar_test;
|
||||||
|
import 'desktop/database/database_cell_test.dart' as database_cell_test;
|
||||||
|
import 'desktop/database/database_field_settings_test.dart'
|
||||||
|
as database_field_settings_test;
|
||||||
|
import 'desktop/database/database_field_test.dart' as database_field_test;
|
||||||
|
import 'desktop/database/database_filter_test.dart' as database_filter_test;
|
||||||
|
import 'desktop/database/database_row_page_test.dart' as database_row_page_test;
|
||||||
|
import 'desktop/database/database_row_test.dart' as database_row_test;
|
||||||
|
import 'desktop/database/database_setting_test.dart' as database_setting_test;
|
||||||
|
import 'desktop/database/database_share_test.dart' as database_share_test;
|
||||||
|
import 'desktop/database/database_sort_test.dart' as database_sort_test;
|
||||||
|
import 'desktop/database/database_view_test.dart' as database_view_test;
|
||||||
|
import 'desktop/document/document_test_runner.dart' as document_test_runner;
|
||||||
|
import 'desktop/uncategorized/emoji_shortcut_test.dart' as emoji_shortcut_test;
|
||||||
|
import 'desktop/uncategorized/empty_test.dart' as first_test;
|
||||||
|
import 'desktop/uncategorized/hotkeys_test.dart' as hotkeys_test;
|
||||||
|
import 'desktop/uncategorized/import_files_test.dart' as import_files_test;
|
||||||
|
import 'desktop/settings/settings_runner.dart' as settings_test_runner;
|
||||||
|
import 'desktop/uncategorized/share_markdown_test.dart' as share_markdown_test;
|
||||||
|
import 'desktop/sidebar/sidebar_test_runner.dart' as sidebar_test_runner;
|
||||||
|
import 'desktop/uncategorized/switch_folder_test.dart' as switch_folder_test;
|
||||||
|
import 'desktop/uncategorized/tabs_test.dart' as tabs_test;
|
||||||
|
|
||||||
|
Future<void> runIntegrationOnDesktop() async {
|
||||||
|
// This test must be run first, otherwise the CI will fail.
|
||||||
|
first_test.main();
|
||||||
|
|
||||||
|
switch_folder_test.main();
|
||||||
|
share_markdown_test.main();
|
||||||
|
import_files_test.main();
|
||||||
|
|
||||||
|
// Document integration tests
|
||||||
|
document_test_runner.startTesting();
|
||||||
|
|
||||||
|
// Sidebar integration tests
|
||||||
|
sidebar_test_runner.startTesting();
|
||||||
|
|
||||||
|
// Board integration test
|
||||||
|
board_test_runner.startTesting();
|
||||||
|
|
||||||
|
// Database integration tests
|
||||||
|
database_cell_test.main();
|
||||||
|
database_field_test.main();
|
||||||
|
database_field_settings_test.main();
|
||||||
|
database_share_test.main();
|
||||||
|
database_row_page_test.main();
|
||||||
|
database_row_test.main();
|
||||||
|
database_setting_test.main();
|
||||||
|
database_filter_test.main();
|
||||||
|
database_sort_test.main();
|
||||||
|
database_view_test.main();
|
||||||
|
database_calendar_test.main();
|
||||||
|
|
||||||
|
// Tabs
|
||||||
|
tabs_test.main();
|
||||||
|
|
||||||
|
// Others
|
||||||
|
hotkeys_test.main();
|
||||||
|
emoji_shortcut_test.main();
|
||||||
|
|
||||||
|
// Appearance integration test
|
||||||
|
appearance_test_runner.main();
|
||||||
|
|
||||||
|
// User settings
|
||||||
|
settings_test_runner.main();
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
// ignore_for_file: unused_import
|
||||||
|
|
||||||
|
import 'dart:io';
|
||||||
|
|
||||||
|
import 'package:appflowy/env/cloud_env.dart';
|
||||||
|
import 'package:appflowy/generated/locale_keys.g.dart';
|
||||||
|
import 'package:appflowy/mobile/presentation/home/home.dart';
|
||||||
|
import 'package:appflowy/startup/startup.dart';
|
||||||
|
import 'package:appflowy/user/application/auth/af_cloud_mock_auth_service.dart';
|
||||||
|
import 'package:appflowy/user/application/auth/auth_service.dart';
|
||||||
|
import 'package:appflowy/user/presentation/screens/sign_in_screen/widgets/widgets.dart';
|
||||||
|
import 'package:appflowy/workspace/application/settings/prelude.dart';
|
||||||
|
import 'package:appflowy/workspace/presentation/settings/widgets/setting_appflowy_cloud.dart';
|
||||||
|
import 'package:appflowy/workspace/presentation/settings/widgets/settings_user_view.dart';
|
||||||
|
import 'package:appflowy_backend/protobuf/flowy-folder/view.pb.dart';
|
||||||
|
import 'package:easy_localization/easy_localization.dart';
|
||||||
|
import 'package:flowy_infra/uuid.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
import 'package:path/path.dart' as p;
|
||||||
|
|
||||||
|
import '../../shared/dir.dart';
|
||||||
|
import '../../shared/mock/mock_file_picker.dart';
|
||||||
|
import '../../shared/util.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
||||||
|
group('anonymous sign in on mobile', () {
|
||||||
|
testWidgets('anon user and then sign in', (tester) async {
|
||||||
|
await tester.initializeAppFlowy(
|
||||||
|
cloudType: AuthenticatorType.local,
|
||||||
|
);
|
||||||
|
|
||||||
|
// click the anonymousSignInButton
|
||||||
|
final anonymousSignInButton = find.byType(SignInAnonymousButton);
|
||||||
|
expect(anonymousSignInButton, findsOneWidget);
|
||||||
|
await tester.tapButton(anonymousSignInButton);
|
||||||
|
|
||||||
|
// expect to see the home page
|
||||||
|
expect(find.byType(MobileHomeScreen), findsOneWidget);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
import 'mobile/sign_in/anonymous_sign_in_test.dart' as anonymous_sign_in_test;
|
||||||
|
|
||||||
|
Future<void> runIntegrationOnMobile() async {
|
||||||
|
anonymous_sign_in_test.main();
|
||||||
|
}
|
@ -1,30 +1,9 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:integration_test/integration_test.dart';
|
import 'package:integration_test/integration_test.dart';
|
||||||
|
|
||||||
import 'appearance_settings_test.dart' as appearance_test_runner;
|
import 'desktop_runner.dart';
|
||||||
import 'board/board_test_runner.dart' as board_test_runner;
|
import 'mobile_runner.dart';
|
||||||
import 'database/database_calendar_test.dart' as database_calendar_test;
|
|
||||||
import 'database/database_cell_test.dart' as database_cell_test;
|
|
||||||
import 'database/database_field_settings_test.dart'
|
|
||||||
as database_field_settings_test;
|
|
||||||
import 'database/database_field_test.dart' as database_field_test;
|
|
||||||
import 'database/database_filter_test.dart' as database_filter_test;
|
|
||||||
import 'database/database_row_page_test.dart' as database_row_page_test;
|
|
||||||
import 'database/database_row_test.dart' as database_row_test;
|
|
||||||
import 'database/database_setting_test.dart' as database_setting_test;
|
|
||||||
import 'database/database_share_test.dart' as database_share_test;
|
|
||||||
import 'database/database_sort_test.dart' as database_sort_test;
|
|
||||||
import 'database/database_view_test.dart' as database_view_test;
|
|
||||||
import 'document/document_test_runner.dart' as document_test_runner;
|
|
||||||
import 'empty_test.dart' as first_test;
|
|
||||||
import 'hotkeys_test.dart' as hotkeys_test;
|
|
||||||
import 'import_files_test.dart' as import_files_test;
|
|
||||||
import 'settings/settings_runner.dart' as settings_test_runner;
|
|
||||||
import 'share_markdown_test.dart' as share_markdown_test;
|
|
||||||
import 'sidebar/sidebar_test_runner.dart' as sidebar_test_runner;
|
|
||||||
import 'switch_folder_test.dart' as switch_folder_test;
|
|
||||||
import 'tabs_test.dart' as tabs_test;
|
|
||||||
import 'emoji_shortcut_test.dart' as emoji_shortcut_test;
|
|
||||||
// import 'auth/supabase_auth_test.dart' as supabase_auth_test_runner;
|
|
||||||
|
|
||||||
/// The main task runner for all integration tests in AppFlowy.
|
/// The main task runner for all integration tests in AppFlowy.
|
||||||
///
|
///
|
||||||
@ -35,50 +14,11 @@ import 'emoji_shortcut_test.dart' as emoji_shortcut_test;
|
|||||||
/// as the test target.
|
/// as the test target.
|
||||||
Future<void> main() async {
|
Future<void> main() async {
|
||||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||||
|
if (Platform.isLinux || Platform.isMacOS || Platform.isWindows) {
|
||||||
// This test must be run first, otherwise the CI will fail.
|
await runIntegrationOnDesktop();
|
||||||
first_test.main();
|
} else if (Platform.isIOS || Platform.isAndroid) {
|
||||||
|
await runIntegrationOnMobile();
|
||||||
switch_folder_test.main();
|
} else {
|
||||||
share_markdown_test.main();
|
throw Exception('Unsupported platform');
|
||||||
import_files_test.main();
|
}
|
||||||
|
|
||||||
// Document integration tests
|
|
||||||
document_test_runner.startTesting();
|
|
||||||
|
|
||||||
// Sidebar integration tests
|
|
||||||
sidebar_test_runner.startTesting();
|
|
||||||
|
|
||||||
// Board integration test
|
|
||||||
board_test_runner.startTesting();
|
|
||||||
|
|
||||||
// Database integration tests
|
|
||||||
database_cell_test.main();
|
|
||||||
database_field_test.main();
|
|
||||||
database_field_settings_test.main();
|
|
||||||
database_share_test.main();
|
|
||||||
database_row_page_test.main();
|
|
||||||
database_row_test.main();
|
|
||||||
database_setting_test.main();
|
|
||||||
database_filter_test.main();
|
|
||||||
database_sort_test.main();
|
|
||||||
database_view_test.main();
|
|
||||||
database_calendar_test.main();
|
|
||||||
|
|
||||||
// Tabs
|
|
||||||
tabs_test.main();
|
|
||||||
|
|
||||||
// Others
|
|
||||||
hotkeys_test.main();
|
|
||||||
emoji_shortcut_test.main();
|
|
||||||
|
|
||||||
// Appearance integration test
|
|
||||||
appearance_test_runner.main();
|
|
||||||
|
|
||||||
// User settings
|
|
||||||
settings_test_runner.main();
|
|
||||||
|
|
||||||
// board_test.main();
|
|
||||||
// empty_document_test.main();
|
|
||||||
// smart_menu_test.main();
|
|
||||||
}
|
}
|
||||||
|
@ -37,9 +37,10 @@ extension AppFlowyTestBase on WidgetTester {
|
|||||||
AuthenticatorType? cloudType,
|
AuthenticatorType? cloudType,
|
||||||
String? email,
|
String? email,
|
||||||
}) async {
|
}) async {
|
||||||
// view.physicalSize = windowsSize;
|
if (Platform.isLinux || Platform.isWindows || Platform.isMacOS) {
|
||||||
|
// Set the window size
|
||||||
await binding.setSurfaceSize(windowSize);
|
await binding.setSurfaceSize(windowSize);
|
||||||
// addTearDown(() => binding.setSurfaceSize(null));
|
}
|
||||||
|
|
||||||
mockHotKeyManagerHandlers();
|
mockHotKeyManagerHandlers();
|
||||||
final applicationDataDirectory = dataDirectory ??
|
final applicationDataDirectory = dataDirectory ??
|
||||||
@ -118,7 +119,7 @@ extension AppFlowyTestBase on WidgetTester {
|
|||||||
Future<void> waitUntilSignInPageShow() async {
|
Future<void> waitUntilSignInPageShow() async {
|
||||||
if (isAuthEnabled) {
|
if (isAuthEnabled) {
|
||||||
final finder = find.byType(SignInAnonymousButton);
|
final finder = find.byType(SignInAnonymousButton);
|
||||||
await pumpUntilFound(finder);
|
await pumpUntilFound(finder, timeout: const Duration(seconds: 30));
|
||||||
expect(finder, findsOneWidget);
|
expect(finder, findsOneWidget);
|
||||||
} else {
|
} else {
|
||||||
final finder = find.byType(GoButton);
|
final finder = find.byType(GoButton);
|
@ -1,13 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
no_pub_get=false
|
|
||||||
|
|
||||||
while getopts 's' flag; do
|
|
||||||
case "${flag}" in
|
|
||||||
s) no_pub_get=true ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Generating flowy icon files"
|
echo "Generating flowy icon files"
|
||||||
|
|
||||||
# Store the current working directory
|
# Store the current working directory
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
no_pub_get=false
|
|
||||||
|
|
||||||
while getopts 's' flag; do
|
|
||||||
case "${flag}" in
|
|
||||||
s) no_pub_get=true ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Store the current working directory
|
# Store the current working directory
|
||||||
original_dir=$(pwd)
|
original_dir=$(pwd)
|
||||||
|
|
||||||
@ -19,9 +11,7 @@ cd ../../../appflowy_flutter
|
|||||||
# Navigate to the appflowy_flutter directory and generate files
|
# Navigate to the appflowy_flutter directory and generate files
|
||||||
echo "Generating files for appflowy_flutter"
|
echo "Generating files for appflowy_flutter"
|
||||||
|
|
||||||
if [ "$no_pub_get" = false ]; then
|
flutter packages pub get >/dev/null 2>&1
|
||||||
flutter packages pub get >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
dart run build_runner build -d
|
dart run build_runner build -d
|
||||||
echo "Done generating files for appflowy_flutter"
|
echo "Done generating files for appflowy_flutter"
|
||||||
@ -36,9 +26,7 @@ for d in */; do
|
|||||||
if [ -f "pubspec.yaml" ]; then
|
if [ -f "pubspec.yaml" ]; then
|
||||||
echo "Generating freezed files in $d..."
|
echo "Generating freezed files in $d..."
|
||||||
echo "Please wait while we clean the project and fetch the dependencies."
|
echo "Please wait while we clean the project and fetch the dependencies."
|
||||||
if [ "$no_pub_get" = false ]; then
|
|
||||||
flutter packages pub get >/dev/null 2>&1
|
flutter packages pub get >/dev/null 2>&1
|
||||||
fi
|
|
||||||
dart run build_runner build -d
|
dart run build_runner build -d
|
||||||
echo "Done running build command in $d"
|
echo "Done running build command in $d"
|
||||||
else
|
else
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
no_pub_get=false
|
|
||||||
|
|
||||||
while getopts 's' flag; do
|
|
||||||
case "${flag}" in
|
|
||||||
s) no_pub_get=true ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Generating language files"
|
echo "Generating language files"
|
||||||
|
|
||||||
# Store the current working directory
|
# Store the current working directory
|
||||||
@ -24,6 +16,9 @@ rm -rf assets/translations/
|
|||||||
mkdir -p assets/translations/
|
mkdir -p assets/translations/
|
||||||
cp -f ../resources/translations/*.json assets/translations/
|
cp -f ../resources/translations/*.json assets/translations/
|
||||||
|
|
||||||
|
# the ci alwayas return a 'null check operator used on a null value' error.
|
||||||
|
# so we force to exec the below command to avoid the error.
|
||||||
|
# https://github.com/dart-lang/pub/issues/3314
|
||||||
flutter pub get
|
flutter pub get
|
||||||
flutter packages pub get
|
flutter packages pub get
|
||||||
|
|
||||||
|
@ -82,10 +82,10 @@ run_task = { name = [
|
|||||||
script_runner = "@shell"
|
script_runner = "@shell"
|
||||||
|
|
||||||
[tasks.appflowy-android-dev-ci]
|
[tasks.appflowy-android-dev-ci]
|
||||||
dependencies = ["appflowy-core-dev-android"]
|
dependencies = ["appflowy-core-dev-android-ci"]
|
||||||
run_task = { name = [
|
run_task = { name = [
|
||||||
"code_generation",
|
"code_generation",
|
||||||
"flutter-build-android",
|
"flutter-build-android-ci",
|
||||||
] }
|
] }
|
||||||
script_runner = "@shell"
|
script_runner = "@shell"
|
||||||
|
|
||||||
|
@ -27,11 +27,11 @@ script = [
|
|||||||
"""
|
"""
|
||||||
cd rust-lib/
|
cd rust-lib/
|
||||||
rustup show
|
rustup show
|
||||||
if [ "${BUILD_FLAG}" == "debug" ]; then
|
if [ "${BUILD_FLAG}" = "debug" ]; then
|
||||||
echo "🚀 🚀 🚀 Building for debug"
|
echo "🚀 🚀 🚀 Building iOS SDK for debug"
|
||||||
cargo lipo --targets ${RUST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
cargo lipo --targets ${RUST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
||||||
else
|
else
|
||||||
echo "🚀 🚀 🚀 Building for release"
|
echo "🚀 🚀 🚀 Building iOS SDK for release"
|
||||||
cargo lipo --release --targets ${RUST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
cargo lipo --release --targets ${RUST_COMPILE_TARGET} --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
||||||
fi
|
fi
|
||||||
cd ../
|
cd ../
|
||||||
@ -49,18 +49,28 @@ run_task = { name = [
|
|||||||
"restore-crate-type",
|
"restore-crate-type",
|
||||||
] }
|
] }
|
||||||
|
|
||||||
|
# only use in CI job
|
||||||
|
[tasks.appflowy-core-dev-android-ci]
|
||||||
|
category = "Build"
|
||||||
|
dependencies = ["env_check", "set-app-version"]
|
||||||
|
run_task = { name = [
|
||||||
|
"setup-crate-type",
|
||||||
|
"sdk-build-android-ci",
|
||||||
|
"post-mobile-android",
|
||||||
|
"restore-crate-type",
|
||||||
|
] }
|
||||||
|
|
||||||
[tasks.sdk-build-android]
|
[tasks.sdk-build-android]
|
||||||
dependencies = ["set-app-version"]
|
dependencies = ["set-app-version"]
|
||||||
private = true
|
private = true
|
||||||
script = [
|
script = [
|
||||||
"""
|
"""
|
||||||
cd rust-lib/
|
cd rust-lib/
|
||||||
rustup show
|
|
||||||
if [ "${BUILD_FLAG}" = "debug" ]; then
|
if [ "${BUILD_FLAG}" = "debug" ]; then
|
||||||
echo "🚀 🚀 🚀 Building for debug"
|
echo "🚀 🚀 🚀 Building Android SDK for debug"
|
||||||
cargo ndk -t arm64-v8a -t x86_64 -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
cargo ndk -t arm64-v8a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
||||||
else
|
else
|
||||||
echo "🚀 🚀 🚀 Building for release"
|
echo "🚀 🚀 🚀 Building Android SDK for release"
|
||||||
cargo ndk -t arm64-v8a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi --release
|
cargo ndk -t arm64-v8a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi --release
|
||||||
fi
|
fi
|
||||||
cd ../
|
cd ../
|
||||||
@ -68,6 +78,19 @@ script = [
|
|||||||
]
|
]
|
||||||
script_runner = "@shell"
|
script_runner = "@shell"
|
||||||
|
|
||||||
|
# only use in CI job
|
||||||
|
[tasks.sdk-build-android-ci]
|
||||||
|
dependencies = ["set-app-version"]
|
||||||
|
private = true
|
||||||
|
script = [
|
||||||
|
"""
|
||||||
|
cd rust-lib/
|
||||||
|
cargo ndk -t arm64-v8a -o ./jniLibs build --features "${FLUTTER_DESKTOP_FEATURES}" --package=dart-ffi
|
||||||
|
cd ../
|
||||||
|
""",
|
||||||
|
]
|
||||||
|
script_runner = "@shell"
|
||||||
|
|
||||||
[tasks.post-mobile-ios]
|
[tasks.post-mobile-ios]
|
||||||
private = true
|
private = true
|
||||||
script = [
|
script = [
|
||||||
@ -76,6 +99,9 @@ script = [
|
|||||||
dart_ffi_dir= set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/appflowy_flutter/packages/appflowy_backend/${TARGET_OS}
|
dart_ffi_dir= set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/appflowy_flutter/packages/appflowy_backend/${TARGET_OS}
|
||||||
lib = set lib${LIB_NAME}.${LIB_EXT}
|
lib = set lib${LIB_NAME}.${LIB_EXT}
|
||||||
|
|
||||||
|
ls -a ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}
|
||||||
|
|
||||||
|
|
||||||
echo "💻 💻 💻 Copying ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/${lib} to ${dart_ffi_dir}/${lib}"
|
echo "💻 💻 💻 Copying ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/${lib} to ${dart_ffi_dir}/${lib}"
|
||||||
rm -f ${dart_ffi_dir}/${lib}
|
rm -f ${dart_ffi_dir}/${lib}
|
||||||
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/${lib} \
|
cp ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/rust-lib/target/${RUST_COMPILE_TARGET}/${BUILD_FLAG}/${lib} \
|
||||||
|
Loading…
Reference in New Issue
Block a user