commit 5a10c3d2c6c9bbd2cfc1ea28b6b604ce319a9a8d Author: OverPoweredDev Date: Sat Jun 26 17:56:24 2021 +0530 added tests for other pages diff --git a/tests/options.test.js b/tests/options.test.js new file mode 100644 index 0000000..3ce746b --- /dev/null +++ b/tests/options.test.js @@ -0,0 +1,58 @@ +const puppeteer = require('puppeteer'); +const assert = require('assert'); +const path = require('path'); + +const timeout = 1000; +const extensionPath = path.join(__dirname, '..','src/'); +const extensionName = 'Apertium'; +const extensionEndURL = 'popup/options.html'; + +let browser = null; +let extensionID = null; +let extensionOptions = null; + +describe('Options Testing', async function () { + it('Extension can be Loaded', async function () { + await loadExtension(); + assert.ok(browser, 'Browser has not been loaded') + assert.ok(extensionID, 'Extension has not been loaded'); + }); + + it('UI Elements are Rendered', async function (){ + extensionOptions = await browser.newPage(); + await extensionOptions.goto(`chrome-extension://${extensionID}/${extensionEndURL}`); + }); + + after(async function (){ + await browser.close(); + }); +}); + +async function getExtensionID(browser) { + //required to let browser page load + const dummyPage = await browser.newPage(); + await dummyPage.waitForTimeout(timeout); + + const targets = await browser.targets(); + const extensionTarget = targets.find(({_targetInfo}) => { + return _targetInfo.title === extensionName && _targetInfo.type === 'background_page'; + }); + + // Extract the URL + const extensionURL = extensionTarget._targetInfo.url; + const urlSplit = extensionURL.split('/'); + + return urlSplit[2]; +} + +async function loadExtension() { + browser = await puppeteer.launch({ + headless: false, + args: [ + `--disable-extensions-except=${extensionPath}`, + `--load-extension=${extensionPath}` + ] + }); + + extensionID = await getExtensionID(browser); +} \ No newline at end of file diff --git a/tests/popup.test.js b/tests/popup.test.js index 01ccf2d..6893bd8 100644 --- a/tests/popup.test.js +++ b/tests/popup.test.js @@ -1,6 +1,6 @@ const puppeteer = require('puppeteer'); const assert = require('assert'); -const path = require('path') +const path = require('path'); const timeout = 1000; const extensionPath = path.join(__dirname, '..','src/'); @@ -23,28 +23,28 @@ describe('Pop-Up Testing', async function () { await extensionPopup.goto(`chrome-extension://${extensionID}/${extensionEndURL}`); let sourceDropdown = await extensionPopup.$('#source-dropdown-div'); - assert.ok(sourceDropdown, 'Source Dropdown does not Render'); + assert.ok(sourceDropdown, 'Source Dropdown does not Load'); let targetDropdown = await extensionPopup.$('#target-dropdown-div'); - assert.ok(targetDropdown, 'Target Dropdown does not Render'); + assert.ok(targetDropdown, 'Target Dropdown does not Load'); let switchButton = await extensionPopup.$('#exchange-source-target'); - assert.ok(switchButton, 'Switch Language Button does not Render'); + assert.ok(switchButton, 'Switch Language Button does not Load'); let inputBar = await extensionPopup.$('#input-text-bar'); - assert.ok(inputBar, 'Input Bar does not Render'); + assert.ok(inputBar, 'Input Bar does not Load'); let outputBar = await extensionPopup.$('#output-text-bar'); - assert.ok(outputBar, 'Output Bar does not Render'); + assert.ok(outputBar, 'Output Bar does not Load'); let translateButton = await extensionPopup.$('#translate-button'); - assert.ok(translateButton, 'Translate Button does not Render'); + assert.ok(translateButton, 'Translate Button does not Load'); let translateWebpageButton = await extensionPopup.$('#translate-webpage-button'); - assert.ok(translateWebpageButton, 'Translate Webpage Button does not Render'); + assert.ok(translateWebpageButton, 'Translate Webpage Button does not Load'); let enableCheckBox = await extensionPopup.$('#enable-hover-checkbox'); - assert.ok(enableCheckBox, 'Enable CheckBox does not Render'); + assert.ok(enableCheckBox, 'Enable CheckBox does not Load'); }); it('Language Dropdowns can be Loaded', async function (){ @@ -58,7 +58,7 @@ describe('Pop-Up Testing', async function () { after(async function (){ await browser.close(); }); -}) +}); async function getExtensionID(browser) { //required to let browser page load @@ -87,20 +87,4 @@ async function loadExtension() { }); extensionID = await getExtensionID(browser); -} - -// (async () => { -// try { -// await loadExtension(); -// -// const page = await browser.newPage(); -// await page.goto(`chrome-extension://${extensionID}/${extensionEndURL}`); -// -// page.waitForTimeout(2000); -// await page.screenshot({path: 'chromium-extension.png'}); -// -// await browser.close(); -// } catch (err) { -// console.error(err); -// } -// })(); \ No newline at end of file +} \ No newline at end of file diff --git a/tests/settings.test.js b/tests/settings.test.js new file mode 100644 index 0000000..762665a --- /dev/null +++ b/tests/settings.test.js @@ -0,0 +1,58 @@ +const puppeteer = require('puppeteer'); +const assert = require('assert'); +const path = require('path'); + +const timeout = 1000; +const extensionPath = path.join(__dirname, '..','src/'); +const extensionName = 'Apertium'; +const extensionEndURL = 'settings/settings.html'; + +let browser = null; +let extensionID = null; +let extensionSettings = null; + +describe('Settings Testing', async function () { + it('Extension can be Loaded', async function () { + await loadExtension(); + assert.ok(browser, 'Browser has not been loaded') + assert.ok(extensionID, 'Extension has not been loaded'); + }); + + it('UI Elements are Rendered', async function (){ + extensionSettings = await browser.newPage(); + await extensionSettings.goto(`chrome-extension://${extensionID}/${extensionEndURL}`); + }); + + after(async function (){ + await browser.close(); + }); +}); + +async function getExtensionID(browser) { + //required to let browser page load + const dummyPage = await browser.newPage(); + await dummyPage.waitForTimeout(timeout); + + const targets = await browser.targets(); + const extensionTarget = targets.find(({_targetInfo}) => { + return _targetInfo.title === extensionName && _targetInfo.type === 'background_page'; + }); + + // Extract the URL + const extensionURL = extensionTarget._targetInfo.url; + const urlSplit = extensionURL.split('/'); + + return urlSplit[2]; +} + +async function loadExtension() { + browser = await puppeteer.launch({ + headless: false, + args: [ + `--disable-extensions-except=${extensionPath}`, + `--load-extension=${extensionPath}` + ] + }); + + extensionID = await getExtensionID(browser); +} \ No newline at end of file