Feat/db #2236
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: E2E | |
# Running E2E test multiple times to confirm test stability. | |
# E2E test could be randomly failed due to the batch update mechanism of React. | |
# Robust E2E test could help improving dev experience. | |
on: | |
push: | |
branches: [master] | |
paths: | |
- 'e2e-tests/**' | |
pull_request: | |
branches: [master] | |
paths: | |
- 'e2e-tests/**' | |
env: | |
CLOJURE_VERSION: '1.11.1.1413' | |
JAVA_VERSION: '11' | |
# This is the latest node version we can run. | |
NODE_VERSION: '18' | |
BABASHKA_VERSION: '1.0.168' | |
jobs: | |
e2e-test-build: | |
name: Build Test Artifact | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
- name: Set up Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'yarn' | |
cache-dependency-path: | | |
yarn.lock | |
static/yarn.lock | |
- name: Set up Java | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Set up Clojure | |
uses: DeLaGuardo/[email protected] | |
with: | |
cli: ${{ env.CLOJURE_VERSION }} | |
- name: Clojure cache | |
uses: actions/cache@v3 | |
id: clojure-deps | |
with: | |
path: | | |
~/.m2/repository | |
~/.gitlibs | |
key: ${{ runner.os }}-clojure-deps-${{ hashFiles('deps.edn') }} | |
restore-keys: ${{ runner.os }}-clojure-deps- | |
- name: Fetch Clojure deps | |
if: steps.clojure-deps.outputs.cache-hit != 'true' | |
run: clojure -A:cljs -P | |
- name: Shadow-cljs cache | |
uses: actions/cache@v3 | |
with: | |
path: .shadow-cljs | |
# ensure update cache every time | |
key: ${{ runner.os }}-shadow-cljs-${{ github.sha }} | |
# will match most recent upload | |
restore-keys: | | |
${{ runner.os }}-shadow-cljs- | |
- name: Fetch yarn deps | |
run: yarn install | |
env: | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true | |
# NOTE: require the app to be build with DEV-RELEASE flag | |
- name: Prepare E2E test build | |
run: | | |
yarn gulp:build && clojure -M:cljs release app electron --config-merge "{:closure-defines {frontend.config/DEV-RELEASE true}}" --debug | |
# NOTE: should include .shadow-cljs if in dev mode(compile) | |
- name: Create Archive for build | |
run: tar czf static.tar.gz static | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: logseq-e2e-artifact | |
path: static.tar.gz | |
retention-days: 1 | |
e2e-test-run: | |
needs: [ e2e-test-build ] | |
name: Test Shard ${{ matrix.shard }} Repeat ${{ matrix.repeat }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
repeat: [1, 2] | |
shard: [1, 2, 3] | |
steps: | |
- name: Repeat message | |
run: echo ::info title=StartUp::E2E testing shard ${{ matrix.shard}}/3 repeat ${{ matrix.repeat }} | |
- name: Checkout | |
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 | |
- name: Download test build artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: logseq-e2e-artifact | |
- name: Extract test Artifact | |
run: tar xzf static.tar.gz | |
- name: Set up Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'yarn' | |
cache-dependency-path: | | |
yarn.lock | |
static/yarn.lock | |
- name: Fetch yarn deps for E2E test | |
run: | | |
yarn install | |
(cd static && yarn install && yarn rebuild:all) | |
env: | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true | |
- name: Ensure static yarn.lock is up to date | |
run: git diff --exit-code static/yarn.lock | |
- name: Install Fluxbox | |
run: sudo apt-get update && sudo apt-get install -y fluxbox | |
# Emulate a virtual framebuffer on machines with no display hardware | |
- name: Run XVFB | |
run: Xvfb :1 -screen 0 1024x768x24 >/dev/null 2>&1 & | |
# Start a lightweight window manager to simulate window actions (maximize,restore etc) | |
- name: Start Fluxbox | |
run: DISPLAY=:1.0 fluxbox >/dev/null 2>&1 & | |
- name: Run Playwright test | |
run: DISPLAY=:1.0 npx playwright test --reporter github --shard=${{ matrix.shard }}/3 | |
env: | |
LOGSEQ_CI: true | |
DEBUG: "pw:api" | |
RELEASE: true # skip dev only test | |
- name: Save e2e artifacts | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: e2e-repeat-report-${{ matrix.shard}}-${{ matrix.repeat }} | |
path: e2e-dump/* | |
retention-days: 1 |