Skip to content
Snippets Groups Projects
Commit 14cde77a authored by Tom Robinson's avatar Tom Robinson
Browse files

Add a e2e test for settings, use nice webchauffeur webdriver wrapper [ci e2e]

parent 441bc3eb
No related branches found
No related tags found
No related merge requests found
......@@ -2,14 +2,23 @@
declare module "selenium-webdriver" {
declare class WebDriver {
wait(condition: Condition|Function, timeout: ?number): Promise<WebElement>;
findElement(selector: By): WebElement;
get(url: string): Promise<void>;
wait(condition: Condition|Function, timeout: ?number): WebElementPromise;
findElement(selector: By): WebElementPromise;
deleteAllCookies(): Promise<void>;
getCurrentUrl(): Promise<string>;
}
declare class WebElement {
findElement(selector: By): WebElementPromise;
click(): Promise<void>;
findElement(selector: By): WebElement;
sendKeys(keys: string): Promise<void>;
clear(): Promise<void>;
getText(): Promise<string>;
getAttribute(attribute: string): Promise<string>;
}
declare class WebElementPromise extends WebElement {
}
declare class Condition {
......
......@@ -4,6 +4,7 @@
"node": true
},
"globals": {
"d": true,
"driver": true,
"server": true
}
......
import {
ensureLoggedIn,
describeE2E
} from "../support/utils";
jasmine.DEFAULT_TIMEOUT_INTERVAL = 600000;
describeE2E("admin/settings", () => {
beforeEach(() =>
ensureLoggedIn(server, driver, "bob@metabase.com", "12341234")
);
describe("admin settings", () => {
fit("should persist a setting", async () => {
const siteName = "Metabase" + Math.random();
await d.get(`${server.host}/admin/settings/general`);
expect(await d.select(".SettingsInput").wait().attribute("value")).not.toBe(siteName);
await d.select(".SettingsInput").wait().clear().sendKeys(siteName).blur();
await d.select(".SaveStatus.text-success").wait();
await d.get(`${server.host}/admin/settings/general`);
expect(await d.select(".SettingsInput").wait().attribute("value")).toBe(siteName);
});
});
});
......@@ -3,6 +3,8 @@ import path from "path";
import { By, until } from "selenium-webdriver";
import { Driver } from "webchauffeur";
const DEFAULT_TIMEOUT = 50000;
const delay = (timeout = 0) => new Promise((resolve) => setTimeout(resolve, timeout));
......@@ -189,6 +191,7 @@ export const describeE2E = (name, options, describeCallback) => {
]);
global.driver = webdriver.driver;
global.d = new Driver(webdriver.driver);
global.server = server;
await driver.get(`${server.host}/`);
......
......@@ -5377,6 +5377,10 @@ progress@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
promise-chain-decorator@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/promise-chain-decorator/-/promise-chain-decorator-1.2.0.tgz#3ed952bd37f6351b3989468d1aff40e7d740b451"
promise@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.1.1.tgz#489654c692616b8aa55b0724fa809bb7db49c5bf"
......@@ -6902,6 +6906,12 @@ watchpack@^0.2.1:
chokidar "^1.0.0"
graceful-fs "^4.1.2"
webchauffeur:
version "1.0.1"
resolved "https://registry.yarnpkg.com/webchauffeur/-/webchauffeur-1.0.1.tgz#ed9d4ae28bb3a2e87d755b2d470c535e39cf30e4"
dependencies:
promise-chain-decorator "^1.2.0"
webpack-core@~0.6.0:
version "0.6.8"
resolved "https://registry.yarnpkg.com/webpack-core/-/webpack-core-0.6.8.tgz#edf9135de00a6a3c26dd0f14b208af0aa4af8d0a"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment