commit 0715f73e3b4d7f59c07a9c817ab3217c9aa2dbf4 Author: OverPoweredDev Date: Mon Jul 19 16:39:58 2021 +0530 added some tests diff --git a/tests/package.json b/tests/package.json new file mode 100644 index 0000000..eb585b7 --- /dev/null +++ b/tests/package.json @@ -0,0 +1,22 @@ +{ + "name": "tests", + "version": "1.0.0", + "description": "tests for apertium-webext", + "main": "none", + "dependencies": { + "puppeteer": "^10.0.0" + }, + "devDependencies": { + "mocha": "^9.0.1" + }, + "scripts": { + "test": "mocha popup.test.js options.test.js settings.test.js" + }, + "keywords": [ + "web-extensions", + "apertium", + "apertium-tools" + ], + "author": "OverPowered", + "license": "ISC" +} diff --git a/tests/popup.test.js b/tests/popup.test.js index 7d24067..8743c42 100644 --- a/tests/popup.test.js +++ b/tests/popup.test.js @@ -2,7 +2,7 @@ const puppeteer = require('puppeteer'); const assert = require('assert'); const path = require('path'); -const timeout = 1500; +const timeout = 1000; const extensionPath = path.join(__dirname, '..','src/'); const extensionName = 'Apertium'; const extensionEndURL = 'popup/popup.html'; @@ -58,14 +58,16 @@ describe('Pop-Up Testing', async function () { let sourceDropdownElements = await sourceDropdown.evaluate(dropdown => { return dropdown.children; }); - assert(sourceDropdownElements, "Source Dropdown Elements do not exist"); + + assert.ok(sourceDropdownElements, "Source Dropdown Elements do not exist"); await targetDropdownButton.evaluate(form => form.click()); let targetDropdownElements = await targetDropdown.evaluate(dropdown => { return dropdown.children; }); - assert(targetDropdownElements, "Target Dropdown Elements do not exist"); + + assert.ok(targetDropdownElements, "Target Dropdown Elements do not exist"); }); it('In-Popup Translation Works', async function (){ @@ -78,7 +80,7 @@ describe('Pop-Up Testing', async function () { let translateButton = await extensionPopup.$('#translate-button'); let switchButton = await extensionPopup.$('#exchange-source-target'); - await sourceDropdownButton.evaluate(form => form.click()); + await sourceDropdownButton.evaluate(btn => btn.click()); await sourceDropdown.evaluate(() => { document.querySelector('option[value="cat"]').click(); }); diff --git a/tests/settings.test.js b/tests/settings.test.js index 7253d33..87c0e4d 100644 --- a/tests/settings.test.js +++ b/tests/settings.test.js @@ -23,22 +23,63 @@ describe('Settings Testing', async function () { await extensionSettings.goto(`chrome-extension://${extensionID}/${extensionEndURL}`); let targetButton = await extensionSettings.$('#default-target-language-button'); - assert.ok(targetButton, ' does not Load'); + assert.ok(targetButton, 'Target Button does not Load'); let targetDropdown = await extensionSettings.$('#target-language-dropdown'); - assert.ok(targetDropdown, ' does not Load'); + assert.ok(targetDropdown, 'Target Dropdown does not Load'); let sourceSelectDropdown = await extensionSettings.$('#source-select'); - assert.ok(sourceSelectDropdown, ' does not Load'); + assert.ok(sourceSelectDropdown, 'Apertium Source Select Dropdown does not Load'); let lastUpdated = await extensionSettings.$('#last-updated'); - assert.ok(lastUpdated, ' does not Load'); + assert.ok(lastUpdated, 'Last Updated field does not Load'); let websiteTable = await extensionSettings.$('#website-table'); - assert.ok(websiteTable, ' does not Load'); + assert.ok(websiteTable, 'Enabled Website Table does not Load'); }); - it('Website Table shows elements', async function (){ + it('Language Dropdown can be selected', async function () { + let dropdownButton = await extensionSettings.$('#default-target-language-button'); + let dropdown = await extensionSettings.$('#target-language-dropdown'); + let selectedLanguage = await extensionSettings.$('#target-language'); + + await dropdownButton.evaluate(btn => btn.click()); + let languageList = await dropdown.evaluate(() => { + document.querySelector('option[value="cat"]').click(); + return document.querySelectorAll('option.enabled-language'); + }); + let language = await selectedLanguage.evaluate((btn) => {return btn.innerText}); + + assert.ok(Object.keys(languageList).length > 1, "Language Dropdown cannot be populated"); + assert.deepStrictEqual(language, 'Catalan', "Language cannot be selected"); + }); + + it('Update button works', async function () { + let lastUpdated = await extensionSettings.$('#last-updated'); + let updateButton = await extensionSettings.$('#update-button'); + let dropdown = await extensionSettings.$('#target-language-dropdown'); + + let prevTime = await lastUpdated.evaluate((span) => {return span.innerText}); + await updateButton.evaluate(button => button.click()); + await extensionSettings.waitForTimeout(timeout); + + let currTime = await lastUpdated.evaluate((span) => {return span.innerText}); + let languageList = await dropdown.evaluate(() => { + return document.querySelectorAll('option.enabled-language'); + }); + + assert.ok(Object.keys(languageList).length > 1, "Language Dropdown cannot be populated"); + assert.notDeepStrictEqual(currTime, prevTime, "Language List does not Update") + }); + + it('Source Select works', async function () { + let sourceSelectDropdown = await extensionSettings.$('#source-select'); + let dropdown = await extensionSettings.$('#target-language-dropdown'); + let lastUpdated = await extensionSettings.$('#last-updated'); + + }); + + it('Website Table shows elements', async function () { let websiteTable = await extensionSettings.$('#website-table'); let tableElements = await websiteTable.evaluate(table => { return table.children;