blob: ce6be0c52b2e8db2883e0bdd586067acd233b7e7 [file] [log] [blame]
Marc Kupietz55fc3162022-12-04 16:25:49 +01001const chai = require('chai');
2const assert = chai.assert;
Marc Kupietz5e45a2f2022-12-03 15:32:40 +01003
4class KorAPRC {
5 korap_url = ""
6
7 constructor(korap_url) {
8 this.korap_url = korap_url
9 }
10
11 static new(korap_url) {
12 return new KorAPRC(korap_url)
13 }
14
15 async login(page, username, password) {
Marc Kupietz55fc3162022-12-04 16:25:49 +010016 if (this.login == "") return false;
17 await page.goto(this.korap_url);
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010018 const username_field = await page.$("body > aside > div > fieldset > form > input[type=text]")
19
20 if (username_field != null) {
21 await username_field.type(username);
22 await page.keyboard.press("Tab")
23 await page.keyboard.type(password)
24 await page.keyboard.press("Enter")
Marc Kupietze533ca82022-12-06 07:53:22 +010025 } else {
26 return false
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010027 }
28
Marc Kupietz55fc3162022-12-04 16:25:49 +010029 await page.waitForNavigation();
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010030 const logout = await page.$("body > header > div > a[class=logout]")
31 if (logout == null) {
32 return false
33 }
34
35 let value = await page.evaluate(logout => logout.textContent, logout)
36 if (!value.match(/(Abmelden|Logout)/)) {
37 return false
38 }
39 return true
40 }
41
42 async search(page, query) {
43 const query_field = await page.$("body > header > form > div > input[name=q]")
44 assert.notEqual(query_field, null)
Marc Kupietz359a77b2022-12-04 19:02:57 +010045 await query_field.click({ clickCount: 3 })
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010046 await query_field.type(query)
47 await page.keyboard.press("Enter")
48 await page.waitForNavigation();
49 const total_results = await page.$("#total-results")
50 assert.notEqual(total_results, null, "cannot find total results")
Marc Kupietz514d1542022-12-04 19:02:57 +010051 const hits = Number((await page.evaluate(total_results => total_results.textContent, total_results)).replace(/[,.]/g, ""))
Marc Kupietz5e45a2f2022-12-03 15:32:40 +010052 return hits
53 }
54
55 async logout(page) {
56 const logout_button = await page.$("a[class=logout]")
57 if (logout_button == null) {
58 return false
59 }
60 await page.click("a[class=logout]")
61 const username_field = await page.$("body > aside > div > fieldset > form > input[type=text]")
62 assert.notEqual(username_field, null)
63 return true
64 }
65
66 async assure_glimpse_off(page) {
67 const glimpse = await page.$("input[name=cutoff]")
68 const glimpse_value = await (await glimpse.getProperty('checked')).jsonValue()
69 if (glimpse_value) {
70 await page.click("#glimpse")
71 }
72
73 }
74}
75
76module.exports = KorAPRC