import { describe, it, beforeAll, afterAll } from 'vitest'; import { DeviceDriver } from '../drivers/types'; import { createDriver } from '../drivers/factory'; import { enterPairingMode, configureHubWifi, sleep } from '../utils/common'; import { getWifiCredentials } from '../config/wifi.config'; const texts = (s: string) => (s.match(/text="[^"]*"/g) || []).filter(x => !/text=""/.test(x)).join(' | '); describe('continue plugmini', () => { let driver: DeviceDriver; beforeAll(async () => { driver = createDriver(); await driver.createSession(); }); afterAll(async () => { await driver.destroySession(); }); it('from guide', { timeout: 120000 }, async () => { console.log('CURRENT::', texts(await driver.getSource()).slice(0,200)); // 引导页:按 ch1 长按 + Next 触发连接 await enterPairingMode('plug_mini').catch(e=>console.log('relay err', e.message)); await sleep(1500); const n = await driver.findElementRaw('-android uiautomator', 'new UiSelector().text("Next")'); if (n) { await driver.tapElement(n); console.log('tapped Next'); } // 等连接 + 看是否到 WiFi 配网页 for (let i=0;i<8;i++){ await sleep(3000); const s=await driver.getSource(); if(/Configure Wi-?Fi|Wi-?Fi password/i.test(s)){console.log('WIFI_PAGE@'+i+'::', texts(s)); break;} console.log('WAIT'+i+'::', texts(s).slice(0,150)); } // 配网 await configureHubWifi(driver, getWifiCredentials()); await sleep(3000); await driver.dismissPopupIfPresent(); await driver.goBackToHomepage(); await sleep(2000); console.log('HOME_PLUG::', texts(await driver.getSource()).split('|').filter(t=>/Plug/i.test(t)).join(' ')); }); });