From 480d2a102006e317bfc640ce05f620bcc35fc5ce Mon Sep 17 00:00:00 2001 From: Anton Keks Date: Thu, 29 Jul 2021 15:18:36 +0300 Subject: [PATCH] run tests in default Github VM, which already contains Chromium needed to run both UI and E2E tests. Docker images with full Chromium are unneedlessly large (cherry picked from commit 556d1d95a80d28e89245a8ab8b40e26f31b5c771) --- .github/workflows/ci.yml | 64 ++++++++++++++++++++++------------ package-lock.json | 70 -------------------------------------- package.json | 1 - web-test-runner.config.mjs | 2 -- 4 files changed, 42 insertions(+), 95 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c867168..3d84e48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,33 +5,53 @@ on: [push] env: GITHUB_SHA: ${{ github.sha }} GITHUB_REF: ${{ github.ref }} - CACHE: docker.pkg.github.com/${{ github.repository }} jobs: - docker: - runs-on: ubuntu-20.04 + build: + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Set env.BRANCH run: echo "BRANCH=$(echo $GITHUB_REF | cut -d'/' -f 3)" >> $GITHUB_ENV - - name: Pull docker layer cache - run: | - echo ${{ secrets.GITHUB_TOKEN }} | docker login docker.pkg.github.com -u $GITHUB_ACTOR --password-stdin - docker pull $CACHE/ui || true - docker pull $CACHE/server || true - - run: docker build --cache-from=$CACHE/ui --target ui-build -t ui-build . - - run: docker tag ui-build $CACHE/ui && docker push $CACHE/ui - - name: Test UI - run: docker run ui-build npm test - - run: docker build --cache-from=$CACHE/ui --cache-from=$CACHE/server --build-arg VERSION=$GITHUB_REF:$GITHUB_SHA --target server-build -t server-build . - - run: docker tag server-build $CACHE/server && docker push $CACHE/server + + - name: Cache node modules + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} + restore-keys: | + ${{ runner.os }}-npm- + + - run: npm ci + - run: npm test + - run: npm run build + + - uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - run: ./gradlew jar + + - name: Start Test DB + run: docker-compose -p app up -d db && sleep 3 && docker-compose logs - name: Test Server - run: | - docker-compose -p app -f docker-compose.yml up -d db && sleep 3 && docker-compose logs - docker run --network app_default -e DB_HOST=db server-build ./gradlew --no-daemon --info test - docker-compose -p app down - - name: Build final - run: | - docker build --cache-from=$CACHE/ui --cache-from=$CACHE/server --target final -t $CACHE/final . - docker push $CACHE/final + run: ./gradlew --info test + - name: E2E Tests + run: ./gradlew --info -Pheadless=true e2eTest + - name: Stop Test DB + run: docker-compose -p app down + + - uses: actions/upload-artifact@v2 + if: always() + with: + name: Test reports + path: build/reports/tests + + - name: Build Docker image + run: docker build -t $IMG:$GITHUB_SHA . diff --git a/package-lock.json b/package-lock.json index 373fc91..6f12c5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "@types/sinon": "^10.0.1", "@types/sinon-chai": "^3.2.5", "@web/test-runner": "^0.13.12", - "@web/test-runner-puppeteer": "^0.10.0", "autoprefixer": "^10.2.6", "chai": "^4.3.4", "http2-proxy": "^5.0.53", @@ -1350,20 +1349,6 @@ "node": ">=12.0.0" } }, - "node_modules/@web/test-runner-puppeteer": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-puppeteer/-/test-runner-puppeteer-0.10.0.tgz", - "integrity": "sha512-fbrrVrjkH3hzpjhqt4z66fneI2sQKU1JBuwWaTUj2Iyl8Ysrm14RkQsztPHrrbEL7HqKBJl6z5ldiB2fdSfl5Q==", - "dev": true, - "dependencies": { - "@web/test-runner-chrome": "^0.10.0", - "@web/test-runner-core": "^0.10.8", - "puppeteer": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/@web/test-runner/node_modules/source-map": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", @@ -5207,30 +5192,6 @@ "node": ">=6" } }, - "node_modules/puppeteer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-8.0.0.tgz", - "integrity": "sha512-D0RzSWlepeWkxPPdK3xhTcefj8rjah1791GE82Pdjsri49sy11ci/JQsAO8K2NRukqvwEtcI+ImP5F4ZiMvtIQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.854822", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" - }, - "engines": { - "node": ">=10.18.1" - } - }, "node_modules/puppeteer-core": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-8.0.0.tgz", @@ -7833,17 +7794,6 @@ "@web/test-runner-core": "^0.10.8" } }, - "@web/test-runner-puppeteer": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@web/test-runner-puppeteer/-/test-runner-puppeteer-0.10.0.tgz", - "integrity": "sha512-fbrrVrjkH3hzpjhqt4z66fneI2sQKU1JBuwWaTUj2Iyl8Ysrm14RkQsztPHrrbEL7HqKBJl6z5ldiB2fdSfl5Q==", - "dev": true, - "requires": { - "@web/test-runner-chrome": "^0.10.0", - "@web/test-runner-core": "^0.10.8", - "puppeteer": "^8.0.0" - } - }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -10810,26 +10760,6 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, - "puppeteer": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-8.0.0.tgz", - "integrity": "sha512-D0RzSWlepeWkxPPdK3xhTcefj8rjah1791GE82Pdjsri49sy11ci/JQsAO8K2NRukqvwEtcI+ImP5F4ZiMvtIQ==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.854822", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" - } - }, "puppeteer-core": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-8.0.0.tgz", diff --git a/package.json b/package.json index ca83c2c..489d081 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,6 @@ "@types/sinon": "^10.0.1", "@types/sinon-chai": "^3.2.5", "@web/test-runner": "^0.13.12", - "@web/test-runner-puppeteer": "^0.10.0", "autoprefixer": "^10.2.6", "chai": "^4.3.4", "http2-proxy": "^5.0.53", diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs index 9b603b6..5fe3bc5 100644 --- a/web-test-runner.config.mjs +++ b/web-test-runner.config.mjs @@ -1,5 +1,4 @@ import snowpackPlugin from '@snowpack/web-test-runner-plugin' -import {puppeteerLauncher} from '@web/test-runner-puppeteer' // Needed by "@snowpack/web-test-runner-plugin" process.env.NODE_ENV = 'test' @@ -11,7 +10,6 @@ export default { plugins: [ snowpackPlugin() ], - browsers: [puppeteerLauncher({launchOptions: {args: ['--no-sandbox']}})], testRunnerHtml: testFramework => `