blob: 68a877811fd3d3f216e196a1fce67f301179b7ef [file] [log] [blame]
Marc Kupietz490b0532024-09-05 09:36:21 +02001const puppeteer = require('puppeteer-extra');
2puppeteer.use(require('puppeteer-extra-plugin-user-preferences')({
3 userPrefs: {
4 safebrowsing: {
5 enabled: false,
6 enhanced: false
7 }
8 }
9}));
Marc Kupietz55fc3162022-12-04 16:25:49 +010010const chai = require('chai');
Marc Kupietz4c5a7a52022-12-04 16:56:30 +010011const { afterEach } = require('mocha');
12const { doesNotMatch } = require('assert');
Marc Kupietz4d335a32024-09-04 16:13:48 +020013const { log } = require('console');
Marc Kupietz55fc3162022-12-04 16:25:49 +010014const assert = chai.assert;
15const should = chai.should();
Marc Kupietz7f1666a2024-07-12 18:35:31 +020016var slack = null;
Marc Kupietz55fc3162022-12-04 16:25:49 +010017
Marc Kupietz0f6c54d2022-12-03 15:32:40 +010018const KORAP_URL = process.env.KORAP_URL || "http://localhost:64543";
Marc Kupietz55fc3162022-12-04 16:25:49 +010019const KORAP_LOGIN = 'KORAP_LOGIN' in process.env ? process.env.KORAP_LOGIN : "user2"
Marc Kupietzc4077822022-12-03 15:32:40 +010020const KORAP_PWD = process.env.KORAP_PWD || "password2";
Marc Kupietz26982382022-12-04 19:02:57 +010021const KORAP_QUERIES = process.env.KORAP_QUERIES || 'geht, [orth=geht & cmc/pos=VVFIN]'
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010022const korap_rc = require('../lib/korap_rc.js').new(KORAP_URL)
23
Marc Kupietz7f1666a2024-07-12 18:35:31 +020024const slack_webhook = process.env.SLACK_WEBHOOK_URL;
Marc Kupietz4d335a32024-09-04 16:13:48 +020025
Marc Kupietz7f1666a2024-07-12 18:35:31 +020026if (slack_webhook) {
27 slack = require('slack-notify')(slack_webhook);
28}
29
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010030function ifConditionIt(title, condition, test) {
Marc Kupietz55fc3162022-12-04 16:25:49 +010031 return condition ? it(title, test) : it.skip(title + " (skipped)", test)
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010032}
Marc Kupietzc4077822022-12-03 15:32:40 +010033
Marc Kupietz0f6c54d2022-12-03 15:32:40 +010034describe('Running KorAP UI end-to-end tests on ' + KORAP_URL, () => {
Marc Kupietzc4077822022-12-03 15:32:40 +010035
36 before(async () => {
Marc Kupietz69e02802023-11-08 14:37:22 +010037 browser = await puppeteer.launch({
38 headless: "new",
Marc Kupietz9e0f5192025-03-09 12:12:16 +010039 // headless: false,
40 // args: [`--window-size=1920,1080`],
Marc Kupietz69e02802023-11-08 14:37:22 +010041 })
Marc Kupietzc4077822022-12-03 15:32:40 +010042 page = await browser.newPage()
Marc Kupietz4c5a7a52022-12-04 16:56:30 +010043 await page.setViewport({
Marc Kupietz9e0f5192025-03-09 12:12:16 +010044 width: 1980,
Marc Kupietz4c5a7a52022-12-04 16:56:30 +010045 height: 768,
46 deviceScaleFactor: 1,
47 });
Marc Kupietz4d335a32024-09-04 16:13:48 +020048 console.log("Browser version: " + await browser.version() + " started")
Marc Kupietzc4077822022-12-03 15:32:40 +010049 })
50
51 after(async () => {
52 await browser.close()
53 })
54
Marc Kupietz4c5a7a52022-12-04 16:56:30 +010055 afterEach(async function () {
56 if (this.currentTest.state == "failed") {
Marc Kupietzf838f8b2022-12-04 19:02:57 +010057 await page.screenshot({path: "failed_" + this.currentTest.title.replaceAll(/[ &\/]/g, "_") + '.png'});
Marc Kupietz7f1666a2024-07-12 18:35:31 +020058 if (slack) {
59 slack.alert({
60 text: 'Test on ' + KORAP_URL + ' failed: ' + this.currentTest.title,
61 })
62 }
Marc Kupietz4c5a7a52022-12-04 16:56:30 +010063 }
64 })
65
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010066 it('KorAP UI is up and running',
67 (async () => {
Marc Kupietz9e0f5192025-03-09 12:12:16 +010068 page.goto(KORAP_URL);
69 await page.waitForNavigation({ waitUntil: 'networkidle2' });
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010070 const query_field = await page.$("#q-field")
71 assert.isNotNull(query_field, "#q-field not found. Kalamar not running?");
Marc Kupietz55fc3162022-12-04 16:25:49 +010072 }))
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010073
74
75 ifConditionIt('Login into KorAP with incorrect credentials fails',
76 KORAP_LOGIN != "",
Marc Kupietzc4077822022-12-03 15:32:40 +010077 (async () => {
Marc Kupietz0f6c54d2022-12-03 15:32:40 +010078 const login_result = await korap_rc.login(page, KORAP_LOGIN, KORAP_PWD + "*")
Marc Kupietzc4077822022-12-03 15:32:40 +010079 login_result.should.be.false
Marc Kupietz55fc3162022-12-04 16:25:49 +010080 }))
Marc Kupietzc4077822022-12-03 15:32:40 +010081
Marc Kupietz5a73a4d2022-12-04 14:09:58 +010082 ifConditionIt('Login into KorAP with correct credentials succeeds',
83 KORAP_LOGIN != "",
Marc Kupietzc4077822022-12-03 15:32:40 +010084 (async () => {
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010085 const login_result = await korap_rc.login(page, KORAP_LOGIN, KORAP_PWD)
Marc Kupietzc4077822022-12-03 15:32:40 +010086 login_result.should.be.true
Marc Kupietz55fc3162022-12-04 16:25:49 +010087 }))
Marc Kupietzc4077822022-12-03 15:32:40 +010088
Marc Kupietz0f6c54d2022-12-03 15:32:40 +010089 it('Can turn glimpse off',
Marc Kupietzc4077822022-12-03 15:32:40 +010090 (async () => {
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010091 await korap_rc.assure_glimpse_off(page)
Marc Kupietz55fc3162022-12-04 16:25:49 +010092 }))
Marc Kupietzc4077822022-12-03 15:32:40 +010093
Marc Kupietz0f6c54d2022-12-03 15:32:40 +010094 describe('Running searches that should have hits', () => {
Marc Kupietz55fc3162022-12-04 16:25:49 +010095
96 before(async () => { await korap_rc.login(page, KORAP_LOGIN, KORAP_PWD) })
97
Marc Kupietz0f6c54d2022-12-03 15:32:40 +010098 KORAP_QUERIES.split(/[;,] */).forEach((query, i) => {
99 it('Search for "' + query + '" has hits',
100 (async () => {
101 await korap_rc.assure_glimpse_off(page)
102 const hits = await korap_rc.search(page, query)
103 hits.should.be.above(0)
104 })).timeout(20000)
105 })
106 })
Marc Kupietz5a73a4d2022-12-04 14:09:58 +0100107
108 ifConditionIt('Logout works',
109 KORAP_LOGIN != "",
Marc Kupietzc4077822022-12-03 15:32:40 +0100110 (async () => {
Marc Kupietz5e45a2f2022-12-03 15:32:40 +0100111 const logout_result = await korap_rc.logout(page)
Marc Kupietzc4077822022-12-03 15:32:40 +0100112 logout_result.should.be.true
Marc Kupietz55fc3162022-12-04 16:25:49 +0100113 }))
Marc Kupietzc4077822022-12-03 15:32:40 +0100114
Marc Kupietz55fc3162022-12-04 16:25:49 +0100115})