Skip to content

Commit

Permalink
run tests in default Github VM, which already contains Chromium neede…
Browse files Browse the repository at this point in the history
…d to run both UI and E2E tests. Docker images with full Chromium are unneedlessly large

(cherry picked from commit 556d1d95a80d28e89245a8ab8b40e26f31b5c771)
  • Loading branch information
angryziber authored and karnilaev committed Aug 6, 2021
1 parent 8070d38 commit 480d2a1
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 95 deletions.
64 changes: 42 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 .
70 changes: 0 additions & 70 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 0 additions & 2 deletions web-test-runner.config.mjs
Original file line number Diff line number Diff line change
@@ -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'
Expand All @@ -11,7 +10,6 @@ export default {
plugins: [
snowpackPlugin()
],
browsers: [puppeteerLauncher({launchOptions: {args: ['--no-sandbox']}})],
testRunnerHtml: testFramework =>
`<html>
<body>
Expand Down

0 comments on commit 480d2a1

Please sign in to comment.