mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-29 17:04:52 +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)); | ||
|  |   }); | ||
|  | }); |