puppeteer: Take screenshot on failure.

To take a screenshot on failure where we have our common error
handling code in common.run_test method we need to have access to
the Page instance. Currently, we create a new Page in the test method
we pass into run_test, so we pass in a new Page instance to that method
so the test and the run_test method have access to the same Page. And,
then we take a screenshot on failure. It will be saved as `failure-${num}`
in var/puppeteer directory.
This commit is contained in:
Priyank Patel
2020-05-16 17:14:31 +00:00
committed by Tim Abbott
parent 74e9019922
commit 0b698d1173
3 changed files with 13 additions and 5 deletions

View File

@@ -45,10 +45,18 @@ class CommonUtils {
}
async run_test(test_function) {
// Pass a page instance to test so we can take
// a screenshot of it when the test fails.
const page = await this.get_page();
try {
await test_function();
await test_function(page);
} catch (e) {
console.log(e);
// Take a screenshot, and increment the screenshot_id.
await this.screenshot(page, `failure-${this.screenshot_id}`);
this.screenshot_id += 1;
await this.browser.close();
process.exit(1);
} finally {

View File

@@ -6,8 +6,8 @@ const subdomain = 'testsubdomain';
const organization_name = 'Awesome Organization';
const host = "zulipdev.com:9981";
async function realm_creation_tests() {
const page = await common.get_page('http://' + host + '/new/');
async function realm_creation_tests(page) {
await page.goto('http://' + host + '/new/');
// submit the email for realm creation.
await page.waitForSelector('#email');

View File

@@ -22,8 +22,8 @@ async function log_out(page) {
assert(page.url().includes('accounts/login/'));
}
async function login_tests() {
const page = await common.get_page(realm_url + 'login/');
async function login_tests(page) {
await page.goto(realm_url + 'login/');
await log_in(page, test_credentials.default_user);
await log_out(page);
}