From 30203a4fae7d0537878f263f9ee34125cec0ff15 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Sun, 10 Nov 2024 20:42:07 +0100 Subject: [PATCH] Prepare for ci --- Dockerfile | 5 +++-- test/test.js | 28 ++++++++++++++++++---------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index 40e819b..cb12f02 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,9 +3,10 @@ FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768 RUN mkdir -p /app/code WORKDIR /app/code -ARG VERSION=6.5 +# renovate: datasource=github-releases depName=traccar/traccar versioning=semver extractVersion=^v(?.+)$ +ARG TRACCAR_VERSION=6.5 -RUN wget https://github.com/traccar/traccar/releases/download/v${VERSION}/traccar-linux-64-${VERSION}.zip -O traccar.zip && \ +RUN wget https://github.com/traccar/traccar/releases/download/v${TRACCAR_VERSION}/traccar-linux-64-${TRACCAR_VERSION}.zip -O traccar.zip && \ unzip traccar.zip && \ ./traccar.run --target /app/code/ --noexec && \ rm README.txt traccar.zip traccar.run diff --git a/test/test.js b/test/test.js index 027617d..11f6d68 100644 --- a/test/test.js +++ b/test/test.js @@ -1,10 +1,6 @@ #!/usr/bin/env node -/* jshint esversion: 8 */ -/* global describe */ -/* global before */ -/* global after */ -/* global it */ +/* global it, xit, describe, before, after, afterEach */ 'use strict'; @@ -12,6 +8,7 @@ require('chromedriver'); const execSync = require('child_process').execSync, expect = require('expect.js'), + fs = require('fs'), path = require('path'), { Builder, By, Key, until } = require('selenium-webdriver'), { Options } = require('selenium-webdriver/chrome'); @@ -24,7 +21,7 @@ if (!process.env.USERNAME || !process.env.EMAIL || !process.env.PASSWORD) { describe('Application life cycle test', function () { this.timeout(0); - const LOCATION = 'test'; + const LOCATION = process.env.LOCATION || 'test'; const TEST_TIMEOUT = 20000; const EXEC_ARGS = { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' }; const DEVICE_NAME = 'FancyDevice'; @@ -39,16 +36,27 @@ describe('Application life cycle test', function () { let athenticated_by_oidc = false; before(function () { - const options = new Options().windowSize({ width: 1280, height: 1024 }); - if (process.env.HEADLESS) options.addArguments('headless'); - - browser = new Builder().forBrowser('chrome').setChromeOptions(options).build(); + const chromeOptions = new Options().windowSize({ width: 1280, height: 1024 }); + if (process.env.CI) chromeOptions.addArguments('no-sandbox', 'disable-dev-shm-usage', 'headless'); + browser = new Builder().forBrowser('chrome').setChromeOptions(chromeOptions).build(); + if (!fs.existsSync('./screenshots')) fs.mkdirSync('./screenshots'); }); after(function () { browser.quit(); }); + afterEach(async function () { + if (!process.env.CI || !app) return; + + const currentUrl = await browser.getCurrentUrl(); + if (!currentUrl.includes(app.domain)) return; + expect(this.currentTest.title).to.be.a('string'); + + const screenshotData = await browser.takeScreenshot(); + fs.writeFileSync(`./screenshots/${new Date().getTime()}-${this.currentTest.title.replaceAll(' ', '_')}.png`, screenshotData, 'base64'); + }); + async function waitForElement(elem) { await browser.wait(until.elementLocated(elem), TEST_TIMEOUT); await browser.wait(until.elementIsVisible(browser.findElement(elem)), TEST_TIMEOUT);