blob: 3f273861837d2c33facfbe2fb373ec4d0fe752cd [file] [log] [blame]
const { doesNotMatch } = require('assert');
const { beforeEach } = require('mocha');
const puppeteer = require('puppeteer')
var chai = require('chai');
var should = chai.should();
var assert = chai.assert;
const KORAP_URL = process.env.KORAP_URL || "http://localhost:64543";
const KORAP_LOGIN = process.env.KORAP_LOGIN || "user2";
const KORAP_PWD = process.env.KORAP_PWD || "password2";
const KORAP_QUERIES = "geht"
// const korap_rc = require('../lib/korap_rc.js');
async function KorAPlogin(page, username, password) {
await page.goto(KORAP_URL, { waitUntil: 'networkidle0' });
const username_field = await page.$("body > aside > div > fieldset > form > input[type=text]")
if (username_field != null) {
await username_field.type(username);
await page.keyboard.press("Tab")
await page.keyboard.type(password)
await page.keyboard.press("Enter")
}
await page.waitForNavigation({ waitUntil: 'networkidle2' });
logout = await page.$("body > header > div > a[class=logout]")
if (logout == null) {
return false
}
let value = await page.evaluate(logout => logout.textContent, logout)
if (!value.match(/(Abmelden|Logout)/)) {
return false
}
return true
}
async function KorAPlogout(page) {
const logout_button = await page.$("a[class=logout]")
if (logout_button == null) {
return false
}
await page.click("a[class=logout]")
const username_field = await page.$("body > aside > div > fieldset > form > input[type=text]")
assert.notEqual(username_field, null)
return true
}
async function search(page, query) {
const query_field = await page.$("body > header > form > div > input[name=q]")
assert.notEqual(query_field, null)
await query_field.type(query)
await page.keyboard.press("Enter")
await page.waitForNavigation();
const total_results = await page.$("#total-results")
assert.notEqual(total_results, null, "cannot find total results")
const hits = Number(await page.evaluate(total_results => total_results.textContent, total_results))
return hits
}
describe('Running KorAP UI tests on ' + KORAP_URL, () => {
const screenshot = 'screenshot.png'
before(async () => {
browser = await puppeteer.launch()
page = await browser.newPage()
})
after(async () => {
await browser.close()
})
it('Login into KorAP with incorrect credentials fails',
(async () => {
const login_result = await KorAPlogin(page, KORAP_LOGIN, KORAP_PWD + "*")
login_result.should.be.false
})).timeout(10000)
it('Login into KorAP with correct credentials succeeds',
(async () => {
const login_result = await KorAPlogin(page, KORAP_LOGIN, KORAP_PWD)
login_result.should.be.true
})).timeout(10000)
const expected_hits = 724
it('Search for "' + KORAP_QUERIES + '" has approx. ' + expected_hits + ' hits',
(async () => {
glimpse = await page.$("input[name=cutoff]")
glimpse_value = await (await glimpse.getProperty('checked')).jsonValue()
if (glimpse_value) {
glimpse = await page.$("input[name=cutoff]")
await page.click("#glimpse")
}
const hits = await search(page, KORAP_QUERIES)
await page.screenshot({ path: screenshot })
hits.should.be.approximately(expected_hits, 10)
})).timeout(20000)
it('Logout works',
(async () => {
const logout_result = await KorAPlogout(page)
logout_result.should.be.true
})).timeout(10000)
})