Set up end to end tests (#121)
* initial e2e test setup with jest and puppeteer * Update package-lock.json * WIP e2e setup * finish setting up end to end tests * extend open addon time * build local version and change background color * update pink image snapshot * hide no "done" callback jest lint error * first draft of integration test CI automation * add .env file during CI * add puppeteer and update .env * try mac-os * try separate build step * add local deploy step * extend time * print body text * set user agent * rearrange console logs * remove console logs * console page * try loading in own window * install mkcert in CI * fix indentation * test local body text * bump time * revert to loading in add on * bump time * print page body * add stealth plugin and update puppeteer * update jest and jest-puppeteer versions to latest * use custom jest-puppeteer environment allows connecting to Google account using stealth plugin * update threshold * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * test console * switch to clasp 2.3.1 * increase timeout * Update integration-tests.yaml * Update integration-tests.yaml * Update package.json * try mac os 10.15 * Update integration-tests.yaml * run node 12,14 * Update global-teardown.js * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * sudo mkcert * Update integration-tests.yaml * try running not in bash * try windows 2016 * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update open-addon.js * Update open-addon.js * Update open-addon.js * Update open-addon.js * Update open-addon.js * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * add timeout * test recovery email * bypass account recovery page * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * test New-SelfSignedCertificate * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * add powershell script * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * Update integration-tests.yaml * test script * Update integration-tests.yaml * add generate-cert.ps1 * restructure test files * Update generate-cert.ps1 * bump failure threshold * fix install mkcert * remove consoles * Update package.json * Update integration-tests.yaml * try forceExit flag * test exec in global setup * restructure * Update integration-tests.yaml * remove ?. null check * add 4 OSs: macos-10.15, macos-latest, windows-2019, windows-latest * test mac 10.15 * Update integration-tests.yaml * use all OSs * -Keyexportpolicy Exportable * Update generate-cert.ps1 * Update integration-tests.yaml * update os * -KeyExportPolicy 'Exportable' * Update integration-tests.yaml * update test readme * Update integration-tests.yaml * add non-extended integration test * add non-extended snapshots * update snapshot names * change name * add basic integration tests pipeline file * Update local-development.test.js * update os's * test s3 image reporter * allowSizeMismatch: true * update test local url to localhost:3000/dialog-demo-bootstrap.html * try medium font render hinting * Update jest-puppeteer.config.js * update screenshots * check resolution * open page when wds is ready * change screen resolution * change to 2560 1440 resolution * test 790 width * change back to 800 * test all mac versions * rename container * skip s3 image reporting if missing env variables * try windows * add OS specific tests * fix image names * Update image-reporter.js * Update package.json * upload windows * Update image-reporter.js * test new font * try all OSs * remove OS-specific test setup * update extended snapshots * rename tests * Update integration-tests-extended.yaml * Update integration-tests-basic.yaml * extend timeout * Update jest.config.js * Update README.md * Update local-development.test.js * revert to 0.04 threshold * add comment * remove push trigger for basic test * extend timeout
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
const openAddon = async page => {
|
||||
await page.goto(process.env.SHEET_URL);
|
||||
await page.waitForTimeout(5000);
|
||||
|
||||
await page.click('a:nth-child(2)'); // click on signin button
|
||||
await page.waitForTimeout(3000);
|
||||
await page.type('input[name="identifier"]', process.env.EMAIL); // type email
|
||||
await page.click('#identifierNext'); // click "next" button
|
||||
await page.waitForTimeout(3000);
|
||||
await page.type('input[name="password"]', process.env.PASSWORD); // type pass
|
||||
await page.waitForTimeout(3000);
|
||||
await page.click('#passwordNext'); // click "next" button
|
||||
await page.waitForTimeout(3000);
|
||||
|
||||
if (
|
||||
await page.evaluate(
|
||||
() =>
|
||||
document.querySelector('h1#headingText') &&
|
||||
document.querySelector('h1#headingText').innerText.includes('erify')
|
||||
)
|
||||
) {
|
||||
try {
|
||||
await page.click('div[data-accountrecovery]');
|
||||
await page.waitForTimeout(6000);
|
||||
} catch {
|
||||
console.log('The "choose account recovery method" page isn\'t shown');
|
||||
}
|
||||
|
||||
await page.type(
|
||||
'input[name="knowledgePreregisteredEmailResponse"]',
|
||||
process.env.TEST_RECOVERY_EMAIL
|
||||
); // type recovery email
|
||||
await page.waitForTimeout(6000);
|
||||
await page.click('button'); // click "next" button
|
||||
await page.waitForTimeout(5000);
|
||||
}
|
||||
|
||||
await page.waitForTimeout(25000); // wait long enough for onopen to be called
|
||||
|
||||
// open new addon menubar item
|
||||
await page.evaluate(() => {
|
||||
const addOnMenuButton = document.querySelector(
|
||||
'div.menu-button.goog-control.goog-inline-block:nth-child(11)'
|
||||
);
|
||||
addOnMenuButton.dispatchEvent(
|
||||
new MouseEvent('mousedown', { bubbles: true })
|
||||
);
|
||||
addOnMenuButton.dispatchEvent(new MouseEvent('mouseup', { bubbles: true }));
|
||||
});
|
||||
|
||||
await page.waitForTimeout(6000);
|
||||
|
||||
// open "bootstrap" menu item
|
||||
await page.evaluate(() => {
|
||||
const bootstrapMenuButton = document.querySelector(
|
||||
'div.goog-menu.goog-menu-vertical.apps-menu-hide-mnemonics:last-child > div:nth-child(2) > div'
|
||||
);
|
||||
bootstrapMenuButton.dispatchEvent(
|
||||
new MouseEvent('mousedown', { bubbles: true })
|
||||
);
|
||||
bootstrapMenuButton.dispatchEvent(
|
||||
new MouseEvent('mouseup', { bubbles: true })
|
||||
);
|
||||
bootstrapMenuButton.dispatchEvent(
|
||||
new MouseEvent('mousedown', { bubbles: true })
|
||||
);
|
||||
bootstrapMenuButton.dispatchEvent(
|
||||
new MouseEvent('mouseup', { bubbles: true })
|
||||
);
|
||||
});
|
||||
await page.waitForTimeout(10000);
|
||||
};
|
||||
|
||||
module.exports = { openAddon };
|
||||
Reference in New Issue
Block a user