Add e2e test for partial blacklist form option
This commit is contained in:
parent
c9efeeaf3a
commit
be3ee38fdb
2 changed files with 83 additions and 3 deletions
|
@ -8,13 +8,31 @@ export default class FormOptionPage {
|
||||||
this.webdriver = lanthan.getWebDriver();
|
this.webdriver = lanthan.getWebDriver();
|
||||||
}
|
}
|
||||||
|
|
||||||
async setBlacklist(nth: number, value: string): Promise<void> {
|
async setBlacklist(nth: number, url: string): Promise<void> {
|
||||||
let selector = '.form-blacklist-form-row > .column-url';
|
let selector = '.form-blacklist-form-row > .column-url';
|
||||||
let inputs = await this.webdriver.findElements(By.css(selector));
|
let inputs = await this.webdriver.findElements(By.css(selector));
|
||||||
if (inputs.length <= nth) {
|
if (inputs.length <= nth) {
|
||||||
throw new RangeError('Index out of range to set a blacklist')
|
throw new RangeError('Index out of range to set a blacklist')
|
||||||
}
|
}
|
||||||
await inputs[nth].sendKeys(value);
|
await inputs[nth].sendKeys(url);
|
||||||
|
await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
|
||||||
|
}
|
||||||
|
|
||||||
|
async setPartialBlacklist(nth: number, url: string, keys: string): Promise<void> {
|
||||||
|
let selector = '.form-partial-blacklist-form-row > .column-url';
|
||||||
|
let inputs = await this.webdriver.findElements(By.css(selector));
|
||||||
|
if (inputs.length <= nth) {
|
||||||
|
throw new RangeError('Index out of range to set a partial blacklist')
|
||||||
|
}
|
||||||
|
await inputs[nth].sendKeys(url);
|
||||||
|
await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
|
||||||
|
|
||||||
|
selector = '.form-partial-blacklist-form-row > .column-keys';
|
||||||
|
inputs = await this.webdriver.findElements(By.css(selector));
|
||||||
|
if (inputs.length <= nth) {
|
||||||
|
throw new RangeError('Index out of range to set a partial blacklist')
|
||||||
|
}
|
||||||
|
await inputs[nth].sendKeys(keys);
|
||||||
await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
|
await this.webdriver.executeScript(`document.querySelectorAll('${selector}')[${nth}].blur()`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +61,13 @@ export default class FormOptionPage {
|
||||||
await this.webdriver.wait(until.elementLocated(By.css(`.form-blacklist-form-row:nth-child(${rows.length + 1})`)));
|
await this.webdriver.wait(until.elementLocated(By.css(`.form-blacklist-form-row:nth-child(${rows.length + 1})`)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async addPartialBlacklist(): Promise<void> {
|
||||||
|
let rows = await this.webdriver.findElements(By.css(`.form-partial-blacklist-form-row`));
|
||||||
|
let button = await this.webdriver.findElement(By.css('.form-partial-blacklist-form .ui-add-button'))
|
||||||
|
await button.click();
|
||||||
|
await this.webdriver.wait(until.elementLocated(By.css(`.form-partial-blacklist-form-row:nth-child(${rows.length + 2})`)));
|
||||||
|
}
|
||||||
|
|
||||||
async removeBlackList(nth: number): Promise<void> {
|
async removeBlackList(nth: number): Promise<void> {
|
||||||
let buttons = await this.webdriver.findElements(By.css('.form-blacklist-form-row .ui-delete-button'));
|
let buttons = await this.webdriver.findElements(By.css('.form-blacklist-form-row .ui-delete-button'));
|
||||||
if (buttons.length <= nth) {
|
if (buttons.length <= nth) {
|
||||||
|
@ -51,6 +76,14 @@ export default class FormOptionPage {
|
||||||
await buttons[nth].click()
|
await buttons[nth].click()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async removePartialBlackList(nth: number): Promise<void> {
|
||||||
|
let buttons = await this.webdriver.findElements(By.css('.form-partial-blacklist-form-row .ui-delete-button'));
|
||||||
|
if (buttons.length <= nth) {
|
||||||
|
throw new RangeError('Index out of range to remove partial blacklist')
|
||||||
|
}
|
||||||
|
await buttons[nth].click()
|
||||||
|
}
|
||||||
|
|
||||||
async addSearchEngine(): Promise<void> {
|
async addSearchEngine(): Promise<void> {
|
||||||
let rows = await this.webdriver.findElements(By.css(`.form-search-form-row > .column-name`));
|
let rows = await this.webdriver.findElements(By.css(`.form-search-form-row > .column-name`));
|
||||||
let button = await this.webdriver.findElement(By.css('.form-search-form > .ui-add-button'))
|
let button = await this.webdriver.findElement(By.css('.form-search-form > .ui-add-button'))
|
||||||
|
|
|
@ -35,7 +35,7 @@ describe("options form page", () => {
|
||||||
assert.strictEqual(settings.source, 'form')
|
assert.strictEqual(settings.source, 'form')
|
||||||
});
|
});
|
||||||
|
|
||||||
it('add blacklist', async () => {
|
it('add blacklist item', async () => {
|
||||||
let page = await OptionPage.open(lanthan);
|
let page = await OptionPage.open(lanthan);
|
||||||
let forms = await page.switchToForm();
|
let forms = await page.switchToForm();
|
||||||
// Scroll is required to click a button on Firefox 60
|
// Scroll is required to click a button on Firefox 60
|
||||||
|
@ -64,6 +64,53 @@ describe("options form page", () => {
|
||||||
assert.deepStrictEqual(settings.form.blacklist, ['yahoo.com'])
|
assert.deepStrictEqual(settings.form.blacklist, ['yahoo.com'])
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('add a partial blacklist item', async () => {
|
||||||
|
let page = await OptionPage.open(lanthan);
|
||||||
|
let forms = await page.switchToForm();
|
||||||
|
// Scroll is required to click a button on Firefox 60
|
||||||
|
await page.scrollTo(0, 1000);
|
||||||
|
|
||||||
|
// assert default
|
||||||
|
let settings = (await browser.storage.local.get('settings')).settings;
|
||||||
|
assert.deepStrictEqual(settings.form.blacklist, []);
|
||||||
|
|
||||||
|
// add blacklist items
|
||||||
|
await forms.addPartialBlacklist();
|
||||||
|
await forms.setPartialBlacklist(0, 'google.com', 'j,k,<C-U>');
|
||||||
|
|
||||||
|
settings = (await browser.storage.local.get('settings')).settings;
|
||||||
|
assert.deepStrictEqual(settings.form.blacklist, [
|
||||||
|
{ url: 'google.com', keys: ['j', 'k', '<C-U>'] },
|
||||||
|
]);
|
||||||
|
|
||||||
|
await forms.addPartialBlacklist();
|
||||||
|
await forms.setPartialBlacklist(1, 'yahoo.com', 'g,G');
|
||||||
|
|
||||||
|
settings = (await browser.storage.local.get('settings')).settings;
|
||||||
|
assert.deepStrictEqual(settings.form.blacklist, [
|
||||||
|
{ url: 'google.com', keys: ['j', 'k', '<C-U>'] },
|
||||||
|
{ url: 'yahoo.com', keys: ['g', 'G'] },
|
||||||
|
]);
|
||||||
|
|
||||||
|
await forms.addBlacklist();
|
||||||
|
await forms.setBlacklist(0, 'bing.com');
|
||||||
|
|
||||||
|
settings = (await browser.storage.local.get('settings')).settings;
|
||||||
|
assert.deepStrictEqual(settings.form.blacklist, [
|
||||||
|
{ url: 'google.com', keys: ['j', 'k', '<C-U>'] },
|
||||||
|
{ url: 'yahoo.com', keys: ['g', 'G'] },
|
||||||
|
'bing.com',
|
||||||
|
]);
|
||||||
|
|
||||||
|
// delete first item
|
||||||
|
await forms.removePartialBlackList(0);
|
||||||
|
settings = (await browser.storage.local.get('settings')).settings;
|
||||||
|
assert.deepStrictEqual(settings.form.blacklist, [
|
||||||
|
{ url: 'yahoo.com', keys: ['g', 'G'] },
|
||||||
|
'bing.com',
|
||||||
|
])
|
||||||
|
});
|
||||||
|
|
||||||
it('add search engines', async () => {
|
it('add search engines', async () => {
|
||||||
let page = await OptionPage.open(lanthan);
|
let page = await OptionPage.open(lanthan);
|
||||||
let forms = await page.switchToForm();
|
let forms = await page.switchToForm();
|
||||||
|
|
Reference in a new issue