Skip to content

[WIP]: feat: optimize listview performance. #2064

[WIP]: feat: optimize listview performance.

[WIP]: feat: optimize listview performance. #2064

name: Integration Test
on: [workflow_dispatch, pull_request]
env:
nodeVersion: "16"
cmakeVersion: "3.22.x"
flutter: "3.24.0"
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
setup:
runs-on: 'macos-14'
outputs:
matrix: ${{ steps.matrix.outputs.value }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- id: matrix
run: |
JSON=$(node -e "console.log(JSON.stringify(require('./integration_tests/spec_group.json').map(j=>j.name)))")
echo "::set-output name=value::$(echo $JSON)"
build_bridge:
runs-on: 'macos-14'
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: jwlawson/actions-setup-cmake@v1.11
with:
cmake-version: ${{ env.cmakeVersion }}
- run: npm i
- run: npm run build:bridge:macos
- uses: actions/upload-artifact@v4
with:
name: macos_bridge_binary
path: bridge/build/macos/
bridge_unit_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: jwlawson/actions-setup-cmake@v1.11
with:
cmake-version: ${{ env.cmakeVersion }}
- run: |
sudo apt-get update
sudo apt-get install chrpath ninja-build pkg-config -y
- run: npm i
- run: ENABLE_ASAN=true npm run build:bridge:linux
- run: node scripts/run_bridge_unit_test.js
webf_unit_test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.flutter }}
- run: flutter config --enable-macos-desktop
- run: flutter doctor -v
- run: cd webf && flutter test
integration_test:
runs-on: 'macos-14'
needs: [ setup, build_bridge ]
strategy:
fail-fast: false
matrix:
value: ${{fromJson(needs.setup.outputs.matrix)}}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.flutter }}
- run: flutter config --enable-macos-desktop
- run: flutter doctor -v
- uses: actions/download-artifact@v4
with:
name: macos_bridge_binary
path: bridge/build/macos/
- run: cd integration_tests && npm i
- name: Run Test
run: cd integration_tests && CI=true SPEC_SCOPE="${{ matrix.value }}" npm run integration
id: test
continue-on-error: true
- uses: actions/upload-artifact@v4
if: steps.test.outcome != 'success'
with:
name: integration_${{ matrix.value }}_snapshots
path: integration_tests/snapshots
- name: Check on failures
if: steps.test.outcome != 'success'
run: exit 1
multiple_page_test:
runs-on: 'macos-14'
needs: [ build_bridge ]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: actions/download-artifact@v4
with:
name: macos_bridge_binary
path: bridge/build/macos/
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.flutter }}
- run: flutter config --enable-macos-desktop
- run: flutter doctor -v
- name: Run MultiplePageTest Test
run: cd integration_tests && LOAD_MODE=prerendering node scripts/preload_prerendering_page_integration.js
id: test
continue-on-error: true
- name: Check on failures
if: steps.test.outcome != 'success'
run: exit 1
preload_page_test:
runs-on: 'macos-14'
needs: [ build_bridge ]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: actions/download-artifact@v4
with:
name: macos_bridge_binary
path: bridge/build/macos/
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.flutter }}
- run: flutter config --enable-macos-desktop
- run: flutter doctor -v
- name: Run MultiplePageTest Test
run: cd integration_tests && LOAD_MODE=preload node scripts/preload_prerendering_page_integration.js
id: test
continue-on-error: true
- name: Check on failures
if: steps.test.outcome != 'success'
run: exit 1
prerendering_page_test:
runs-on: 'macos-14'
needs: [ build_bridge ]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: actions/download-artifact@v4
with:
name: macos_bridge_binary
path: bridge/build/macos/
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.flutter }}
- run: flutter config --enable-macos-desktop
- run: flutter doctor -v
- name: Run MultiplePageTest Test
run: cd integration_tests && LOAD_MODE=prerendering node scripts/preload_prerendering_page_integration.js
id: test
continue-on-error: true
- name: Check on failures
if: steps.test.outcome != 'success'
run: exit 1
memory_leak_test:
runs-on: 'macos-14'
needs: [ build_bridge ]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/setup-node@v2
with:
node-version: ${{ env.nodeVersion }}
- uses: actions/download-artifact@v4
with:
name: macos_bridge_binary
path: bridge/build/macos/
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.flutter }}
- run: flutter config --enable-macos-desktop
- run: flutter doctor -v
- name: Run MemoryLeak Test
run: cd integration_tests && npm run memory_leak_integration
id: test
continue-on-error: true
- name: Check on failures
if: steps.test.outcome != 'success'
run: exit 1