增加 后端,后台管理系统,uniapp会员端的自动化测试。
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
const automator = require('miniprogram-automator');
|
||||
|
||||
let sharedInstance = null;
|
||||
let connectPromise = null;
|
||||
|
||||
/**
|
||||
* 连接小程序自动化实例(使用共享单例,避免多个套件重复启动)
|
||||
* @returns {Promise<import('miniprogram-automator').MiniProgram>}
|
||||
*/
|
||||
async function connectMiniProgram() {
|
||||
if (sharedInstance) {
|
||||
return sharedInstance;
|
||||
}
|
||||
|
||||
if (connectPromise) {
|
||||
return connectPromise;
|
||||
}
|
||||
|
||||
const port = global.DEVTOOLS_PORT || 63956;
|
||||
|
||||
connectPromise = (async () => {
|
||||
console.log('连接小程序自动化...');
|
||||
console.log(' 端口:', port);
|
||||
|
||||
const mp = await automator.connect({
|
||||
wsEndpoint: `ws://127.0.0.1:${port}`
|
||||
});
|
||||
|
||||
sharedInstance = mp;
|
||||
console.log('连接小程序自动化成功');
|
||||
return mp;
|
||||
})();
|
||||
|
||||
try {
|
||||
return await connectPromise;
|
||||
} catch (error) {
|
||||
connectPromise = null;
|
||||
sharedInstance = null;
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 断开小程序自动化连接(仅在全局 teardown 时使用)
|
||||
*/
|
||||
async function disconnectMiniProgram() {
|
||||
if (sharedInstance) {
|
||||
try {
|
||||
await sharedInstance.close();
|
||||
} catch (_) {
|
||||
// 忽略关闭错误
|
||||
}
|
||||
sharedInstance = null;
|
||||
connectPromise = null;
|
||||
console.log('小程序自动化已断开');
|
||||
}
|
||||
}
|
||||
|
||||
async function waitForText(miniProgram, text, timeout = 10000) {
|
||||
const startTime = Date.now();
|
||||
while (Date.now() - startTime < timeout) {
|
||||
const page = await miniProgram.currentPage();
|
||||
const content = await page.data();
|
||||
if (JSON.stringify(content).includes(text)) {
|
||||
return true;
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
connectMiniProgram,
|
||||
disconnectMiniProgram,
|
||||
launchMiniProgram: connectMiniProgram, // 兼容旧引用名
|
||||
closeMiniProgram: disconnectMiniProgram, // 兼容旧引用名
|
||||
waitForText
|
||||
};
|
||||
Reference in New Issue
Block a user