🚑 hotfix compatibility with new UI
Resolves #56
Issues:
* not backwards compatible with old UI
* in a sound way, E2E tests can only be developed closely connected
to the Kalamar development (it starts with needed elements having no
IDs...)
Change-Id: I9bdeeb6f2b2f108031628420a1e667f72c2e19b3
diff --git a/lib/korap_rc.js b/lib/korap_rc.js
index 5493190..698f5a9 100644
--- a/lib/korap_rc.js
+++ b/lib/korap_rc.js
@@ -13,57 +13,64 @@
}
async login(page, username, password) {
+ page.goto(this.korap_url);
+ await page.waitForNavigation({ waitUntil: 'networkidle2' });
if (this.login == "") return false;
- await page.goto(this.korap_url);
- const username_field = await page.$("body > aside > div > fieldset > form > input[type=text]")
+ if (username == "") return false;
+ if (password == "") return false;
+ await page.click('.dropdown-btn');
+ await page.waitForSelector('input[name=handle_or_email]', { visible: true });
+ const username_field = await page.$("input[name=handle_or_email]")
if (username_field != null) {
+ await username_field.focus();
await username_field.type(username);
- await page.keyboard.press("Tab")
+ const password_field = await page.$("input[name=pwd]")
+ await password_field.focus()
await page.keyboard.type(password)
await page.keyboard.press("Enter")
} else {
return false
}
- await page.waitForNavigation();
- const logout = await page.$("body > header > div > a[class=logout]")
+ await page.waitForNavigation({ waitUntil: 'networkidle2' });
+ const logout = await page.$(".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 search(page, query) {
- const query_field = await page.$("body > header > form > div > input[name=q]")
- assert.notEqual(query_field, null)
- await query_field.click({ clickCount: 3 })
- 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)).replace(/[,.]/g, ""))
- return hits
+ const query_field = await page.$("#q-field");
+ assert.notEqual(query_field, null, "Query field not found");
+
+ await page.waitForSelector("#q-field", { visible: true });
+ await query_field.click({ clickCount: 3 });
+ await page.keyboard.type(query);
+ await page.keyboard.press("Enter");
+
+ await page.waitForNavigation({ waitUntil: 'networkidle2' });
+ 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)).replace(/[,.]/g, ""));
+ return hits;
}
async logout(page) {
- const logout_button = await page.$("a[class=logout]")
+ await page.click('.dropdown-btn');
+ await page.waitForSelector('.logout', { visible: true });
+ const logout_button = await page.$(".logout")
if (logout_button == null) {
+ console.log("Logout button not found")
return false
}
- await page.click("a[class=logout]")
- await page.waitForSelector('article.alertify-log');
- const hasSuccessClass = await page.evaluate(() => {
- const article = document.querySelector('article.alertify-log');
- return article.classList.contains('alertify-log-success');
- });
- return hasSuccessClass
+ await logout_button.click()
+ await page.waitForNavigation({ waitUntil: 'networkidle2' });
+ const loginField = await page.$('input[name=handle_or_email]');
+ return loginField !== null;
}
async assure_glimpse_off(page) {