diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4f43c1a343..c733570f07 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,14 +7,80 @@ on: branches: - master jobs: - test: - name: ${{ matrix.type }} tests on ${{ matrix.os }} + integration-test: + name: integration tests on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ubuntu-20.04, macos-11, windows-2019] - type: [unit, smoke] + node-version: [16.x] + steps: + - name: Checkout Release from lens + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Add the current IP address, long hostname and short hostname record to /etc/hosts file + if: runner.os == 'Linux' + run: | + echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts + + - name: Using Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Get npm cache directory path + if: ${{ runner.os != 'Windows' }} + id: npm-cache-dir-path + shell: bash + run: echo "dir=$(npm config get cache)" >> $GITHUB_OUTPUT + + - uses: actions/cache@v3 + if: ${{ runner.os != 'Windows' }} + id: npm-cache # use this to check for `cache-hit` (`steps.npm-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.npm-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + + - uses: nick-fields/retry@v2 + name: Install dependencies + with: + timeout_minutes: 20 + max_attempts: 3 + retry_on: error + command: npm ci + + - name: Install integration test dependencies + id: minikube + uses: medyagh/setup-minikube@master + with: + minikube-version: latest + if: ${{ runner.os == 'Linux' }} + + - run: xvfb-run --auto-servernum --server-args='-screen 0, 1600x900x24' npm run test:integration + name: Run Linux integration tests + if: ${{ runner.os == 'Linux' }} + + - run: npm run test:integration + name: Run macOS integration tests + shell: bash + if: ${{ runner.os == 'macOS' }} + + - run: npm run test:integration + name: Run Windows integration tests + if: ${{ runner.os == 'Windows' }} + + unit-test: + name: unit tests on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04] node-version: [16.x] steps: - name: Checkout Release from lens @@ -57,24 +123,3 @@ jobs: - run: npm run test:unit name: Run tests - if: ${{ runner.os == 'Linux' && matrix.type == 'unit' }} - - - name: Install integration test dependencies - id: minikube - uses: medyagh/setup-minikube@master - with: - minikube-version: latest - if: ${{ runner.os == 'Linux' && matrix.type == 'smoke' }} - - - run: xvfb-run --auto-servernum --server-args='-screen 0, 1600x900x24' npm run test:integration - name: Run Linux integration tests - if: ${{ runner.os == 'Linux' && matrix.type == 'smoke' }} - - - run: npm run test:integration - name: Run macOS integration tests - shell: bash - if: ${{ runner.os == 'macOS' && matrix.type == 'smoke' }} - - - run: npm run test:integration - name: Run Windows integration tests - if: ${{ runner.os == 'Windows' && matrix.type == 'smoke' }}