mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
77 lines
2.3 KiB
JavaScript
77 lines
2.3 KiB
JavaScript
|
const os = require("os");
|
||
|
const path = require("path");
|
||
|
const { expect } = require("chai");
|
||
|
const { spawn, spawnSync } = require("child_process");
|
||
|
const { Builder, By, Capabilities, until } = require("selenium-webdriver");
|
||
|
const { elementIsVisible, elementLocated } = require("selenium-webdriver/lib/until.js");
|
||
|
|
||
|
// create the path to the expected application binary
|
||
|
const application = path.resolve(
|
||
|
__dirname,
|
||
|
"..",
|
||
|
"..",
|
||
|
"..",
|
||
|
"src-tauri",
|
||
|
"target",
|
||
|
"release",
|
||
|
"appflowy_tauri"
|
||
|
);
|
||
|
|
||
|
// keep track of the webdriver instance we create
|
||
|
let driver;
|
||
|
|
||
|
// keep track of the tauri-driver process we start
|
||
|
let tauriDriver;
|
||
|
|
||
|
before(async function() {
|
||
|
// set timeout to 2 minutes to allow the program to build if it needs to
|
||
|
this.timeout(120000);
|
||
|
|
||
|
// ensure the program has been built
|
||
|
spawnSync("cargo", ["build", "--release"]);
|
||
|
|
||
|
// start tauri-driver
|
||
|
tauriDriver = spawn(
|
||
|
path.resolve(os.homedir(), ".cargo", "bin", "tauri-driver"),
|
||
|
[],
|
||
|
{ stdio: [null, process.stdout, process.stderr] }
|
||
|
);
|
||
|
|
||
|
const capabilities = new Capabilities();
|
||
|
capabilities.set("tauri:options", { application });
|
||
|
capabilities.setBrowserName("wry");
|
||
|
|
||
|
// start the webdriver client
|
||
|
driver = await new Builder()
|
||
|
.withCapabilities(capabilities)
|
||
|
.usingServer("http://localhost:4444/")
|
||
|
.build();
|
||
|
});
|
||
|
|
||
|
after(async function() {
|
||
|
// stop the webdriver session
|
||
|
await driver.quit();
|
||
|
|
||
|
// kill the tauri-driver process
|
||
|
tauriDriver.kill();
|
||
|
});
|
||
|
|
||
|
describe("AppFlowy Unit Test", () => {
|
||
|
it("should find get started button", async () => {
|
||
|
// should sign out if already sign in
|
||
|
const getStartedButton = await driver.wait(until.elementLocated(By.xpath("//*[@id=\"root\"]/form/div/div[3]")));
|
||
|
getStartedButton.click();
|
||
|
});
|
||
|
|
||
|
it("should get sign out button", async (done) => {
|
||
|
// const optionButton = await driver.wait(until.elementLocated(By.css('*[test-id=option-button]')));
|
||
|
// const optionButton = await driver.wait(until.elementLocated(By.id('option-button')));
|
||
|
// const optionButton = await driver.wait(until.elementLocated(By.css('[aria-label=option]')));
|
||
|
|
||
|
// Currently, only the find className is work
|
||
|
const optionButton = await driver.wait(until.elementLocated(By.className("relative h-8 w-8")));
|
||
|
optionButton.click();
|
||
|
await new Promise((resolve) => setTimeout(resolve, 4000));
|
||
|
});
|
||
|
});
|