12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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));
- });
- });
|