commit 9840f90223ae0deaa10f5b154a3047fa6c3f9bc1 Author: OverPoweredDev Date: Sat Jul 3 14:36:34 2021 +0530 completed options testing diff --git a/src/lib/storage.js b/src/lib/storage.js index 62cfe15..8155c66 100644 --- a/src/lib/storage.js +++ b/src/lib/storage.js @@ -5,7 +5,7 @@ function getGlobalSettings() { settings = { apertiumSource: "https://apertium.org/apy/", defaultLanguage: "eng", - enabledWebsites: ["en.wikipedia.org", "stackoverflow.com"], + enabledWebsites: ["wiki.apertium.org", "en.wikipedia.org"], lastUpdated: "on Installation", inputSizeLimit: 1000 }; @@ -344,7 +344,5 @@ function isHostname(url) { let validHostnameRegex = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])"; let r = RegExp(validHostnameRegex); - console.log(r.test(url), url) - return r.test(url); } \ No newline at end of file diff --git a/src/popup/options.js b/src/popup/options.js index b4b7f75..467bbd6 100644 --- a/src/popup/options.js +++ b/src/popup/options.js @@ -23,6 +23,7 @@ $(".enabled-language").on('click', function () { // Deletes a website from the hover list $(".delete-website").on('click', function () { + console.log('hi') let hostname = $(this).attr("data-url"); removeFromEnabledWebsiteList(globalSettings, hostname); @@ -59,6 +60,13 @@ function updateEnabledTable(parent) { parent.append("" + rowIter + "" + websiteURL + "trash icon"); rowIter++; }); + + $(".delete-website").on('click', function () { + let hostname = $(this).attr("data-url"); + + removeFromEnabledWebsiteList(globalSettings, hostname); + updateEnabledTable($("#enabled-website-tbody")); + }); } function setDefaultLanguage(defaultLanguage) { diff --git a/tests/options.test.js b/tests/options.test.js index 73d5e75..9d39c21 100644 --- a/tests/options.test.js +++ b/tests/options.test.js @@ -2,7 +2,7 @@ const puppeteer = require('puppeteer'); const assert = require('assert'); const path = require('path'); -const timeout = 1000; +const timeout = 1500; const extensionPath = path.join(__dirname, '..','src/'); const extensionName = 'Apertium'; const extensionEndURL = 'popup/options.html'; @@ -23,25 +23,56 @@ describe('Options Testing', async function () { await extensionOptions.goto(`chrome-extension://${extensionID}/${extensionEndURL}`); let targetButton = await extensionOptions.$('#default-target-language-button'); - assert.ok(targetButton, ' does not Load'); + assert.ok(targetButton, 'Target Button does not Load'); let targetDropdown = await extensionOptions.$('#target-language-dropdown'); - assert.ok(targetDropdown, ' does not Load'); + assert.ok(targetDropdown, 'Target Dropdown does not Load'); let websiteTable = await extensionOptions.$('#website-table'); - assert.ok(websiteTable, ' does not Load'); + assert.ok(websiteTable, 'Website Table does not Load'); + + let inputBar = await extensionOptions.$('#website-input'); + assert.ok(inputBar, 'Input Bar does not Load') let additionalSettingsLink = await extensionOptions.$('#additional-settings'); - assert.ok(additionalSettingsLink, ' does not Load'); + assert.ok(additionalSettingsLink, 'Additional Settings link does not Load'); }); it('Website Table shows elements', async function (){ - //TODO + let websiteTable = await extensionOptions.$('#website-table'); + let tableElements = await websiteTable.evaluate(table => { + return table.children; + }); + assert(tableElements, "Website Table Elements do not exist"); + }); + + it('Website can be added to Table', async function () { + let inputBar = await extensionOptions.$('#website-input'); + let inputButton = await extensionOptions.$('#add-website-button'); + let websiteTable = await extensionOptions.$('#website-table'); + + await inputBar.evaluate(input => input.value = 'example.com'); + await inputButton.evaluate(button => button.click()); + + let websiteName = await websiteTable.evaluate(() => { + return document.querySelector("#enabled-website-tbody > tr:nth-child(3) > td:nth-child(2)").textContent; + }); + + assert.deepStrictEqual(websiteName, 'example.com', 'Cannot add to Website Table') }); it('Website can be deleted from Table', async function () { - //TODO + let websiteTable = await extensionOptions.$('#website-table'); + let prevNumberElements = await parseInt(websiteTable.evaluate(table => { + return document.querySelector("#enabled-website-tbody > tr:last-child > th").textContent; + })); + + let newNumberElements = await parseInt(websiteTable.evaluate(table => { + return document.querySelector("#enabled-website-tbody > tr:last-child > th").textContent; + })); + + assert.deepStrictEqual(newNumberElements, prevNumberElements - 1, 'Website Elements cannot be deleted') }); after(async function (){ diff --git a/tests/popup.test.js b/tests/popup.test.js index 3560c05..7d24067 100644 --- a/tests/popup.test.js +++ b/tests/popup.test.js @@ -88,7 +88,7 @@ describe('Pop-Up Testing', async function () { await inputBar.evaluate(input => input.value = 'Hello'); await translateButton.evaluate(button => button.click()); - await extensionPopup.waitForTimeout(timeout) + await extensionPopup.waitForTimeout(timeout); let translation = await outputBar.evaluate(output => {return output.value}); assert.deepStrictEqual(translation, "Hola", "Translation gives an incorrect value");