name: e2e on: push: branches: - 'master' pull_request: branches: - '*' jobs: test: timeout-minutes: 120 strategy: fail-fast: false matrix: os: [ubuntu, macos, windows] browser: [firefox, firefoxesr] exclude: - os: macos browser: firefoxesr runs-on: ${{ matrix.os }}-latest steps: - name: Checkout uses: actions/checkout@master - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v2 id: yarn-cache with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - name: Install deps run: | yarn install - name: Install Firefox Dev Edition (Linux) if: matrix.browser == 'firefox' && matrix.os == 'ubuntu' run: | sudo yarn global add get-firefox get-firefox --platform linux --branch devedition --extract --target $HOME echo "::add-path::$HOME/firefox" - name: Install Firefox ESR (Linux) if: matrix.browser == 'firefoxesr' && matrix.os == 'ubuntu' run: | sudo yarn global add get-firefox get-firefox --platform linux --branch esr --extract --target $HOME echo "::add-path::$HOME/firefox" - name: Install Firefox Dev Edition (MacOS) if: matrix.browser == 'firefox' && matrix.os == 'macos' run: | brew cask --verbose --debug install homebrew/cask-versions/firefox-developer-edition echo "::add-path::/Applications/Firefox Developer Edition.app/Contents/MacOS/" - name: Install Firefox Dev Edition (Windows) if: matrix.browser == 'firefox' && matrix.os == 'windows' run: | choco install firefox-dev --pre echo "::add-path::C:\Program Files\Firefox Dev Edition" - name: Install Firefox ESR (Windows) if: matrix.browser == 'firefoxesr' && matrix.os == 'windows' run: | choco install firefoxesr /InstallDir:"C:\Program Files\Firefox ESR" echo "::add-path::C:\Program Files\Firefox ESR" - name: Build and test (Firefox) uses: nick-invision/retry@v1 if: matrix.browser != 'chrome' env: HEADLESS: 1 with: max_attempts: 3 timeout_minutes: 10 retry_wait_seconds: 10 command: | yarn run clean && yarn run build && yarn make-zip && yarn jest # - name: Test (Chrome, Linux) # if: matrix.browser == 'chrome' && matrix.os == 'ubuntu' # run: xvfb-run --auto-servernum npm run jest -- ${{ matrix.browser }} || xvfb-run --auto-servernum npm run jest -- ${{ matrix.browser }} # - name: Test (Chrome, Windows/MacOs) # if: matrix.browser == 'chrome' && matrix.os != 'ubuntu' # run: npm run jest -- ${{ matrix.browser }} || npm run jest -- ${{ matrix.browser }}