name: integration test on: push: branches: - "main" - "release/*" paths: - ".github/workflows/integration_test.yml" - "frontend/**" - "!frontend/appflowy_tauri/**" pull_request: branches: - "main" - "release/*" paths: - ".github/workflows/integration_test.yml" - "frontend/**" - "!frontend/appflowy_tauri/**" env: CARGO_TERM_COLOR: always FLUTTER_VERSION: "3.10.1" RUST_TOOLCHAIN: "1.70" concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: tests: if: github.event.pull_request.draft != true strategy: matrix: os: [ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: "stable-2022-04-07" - 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 }} 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: | cargo install --force duckscript_cli 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 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: Config Flutter run: | if [ "$RUNNER_OS" == "Linux" ]; then flutter config --enable-linux-desktop elif [ "$RUNNER_OS" == "macOS" ]; then flutter config --enable-macos-desktop elif [ "$RUNNER_OS" == "Windows" ]; then flutter config --enable-windows-desktop fi shell: bash - name: Build Test lib working-directory: frontend run: | if [ "$RUNNER_OS" == "Linux" ]; then cargo make --profile development-linux-x86_64 appflowy-dev elif [ "$RUNNER_OS" == "macOS" ]; then cargo make --profile development-mac-x86_64 appflowy-dev elif [ "$RUNNER_OS" == "Windows" ]; then cargo make --profile development-windows-x86 appflowy-dev fi shell: bash - name: Run AppFlowy tests working-directory: frontend/appflowy_flutter run: | if [ "$RUNNER_OS" == "Linux" ]; then export DISPLAY=:99 sudo Xvfb -ac :99 -screen 0 1280x1024x24 > /dev/null 2>&1 & sudo apt-get install network-manager flutter test integration_test/runner.dart -d Linux --coverage elif [ "$RUNNER_OS" == "macOS" ]; then flutter test integration_test/runner.dart -d macOS --coverage elif [ "$RUNNER_OS" == "Windows" ]; then flutter test integration_test/runner.dart -d Windows --coverage fi shell: bash - name: Upload coverage to Codecov uses: Wandalen/wretry.action@v1.0.36 with: action: codecov/codecov-action@v3 with: | name: appflowy flags: appflowy_flutter_integrateion_test fail_ci_if_error: true verbose: true os: ${{ matrix.os }} attempt_limit: 5 attempt_delay: 10000