import { defineConfig } from 'cypress'; import mqtt from 'mqtt' function logWithTimestamp(message: string, ...args: any[]) { const timestamp = new Date().toLocaleString(); console.log(`[${timestamp}] ${message}`, ...args); //cy.log(`[${timestamp}] ${message}`); } export default defineConfig({ viewportWidth: 1920, viewportHeight: 1080, e2e: { baseUrl: null,//'http://localhost:10086/#/pages/index/index', // Adjust this to match your application's base // specPattern: '__e2e_test__/**/*.spec.ts', setupNodeEvents(on, config) { on('task', { // 参数:{ broker, topic, payload [, opts] } mqttPublish({ broker = 'ws://localhost:8083/mqtt', topic, payload, qos = 0, retain = false }) { return new Promise((resolve, reject) => { console.log('这里执行了吗') const client = mqtt.connect(broker) client.on('connect', () => { client.publish(topic, payload, { qos, retain }, err => { // console.log(`发布数据--${payload}===broker:${broker}`) logWithTimestamp(`发布数据--${payload}===broker:${broker}`) // 关键:等底层 socket 的 buffer 清空 client.stream.on('drain', () => { client.end(true) // true = 强制 flush 再关闭 logWithTimestamp(`drain发布完成 topic : ${topic}`) resolve(null) }) logWithTimestamp(`发布完成 topic : ${topic}`) if (err) reject(err) else resolve(null) }); }) client.on('error', reject) }) }, // 浏览器日志输出到终端 browserLog(message) { console.log('[Browser Console]', message) return null } }) return require('./cypress/plugins/index.js')(on, config); }, }, });