cypress.config.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { defineConfig } from 'cypress';
  2. import mqtt from 'mqtt'
  3. function logWithTimestamp(message: string, ...args: any[]) {
  4. const timestamp = new Date().toLocaleString();
  5. console.log(`[${timestamp}] ${message}`, ...args);
  6. //cy.log(`[${timestamp}] ${message}`);
  7. }
  8. export default defineConfig({
  9. viewportWidth: 1920,
  10. viewportHeight: 1080,
  11. e2e: {
  12. defaultBrowser: 'chrome',
  13. baseUrl: null,//'http://localhost:10086/#/pages/index/index', // Adjust this to match your application's base
  14. // specPattern: '__e2e_test__/**/*.spec.ts',
  15. setupNodeEvents(on, config) {
  16. on('task', {
  17. // 参数:{ broker, topic, payload [, opts] }
  18. mqttPublish({ broker = 'ws://localhost:8083/mqtt', topic, payload, qos = 0, retain = false }) {
  19. return new Promise((resolve, reject) => {
  20. console.log('这里执行了吗')
  21. const client = mqtt.connect(broker)
  22. client.on('connect', () => {
  23. client.publish(topic, payload, { qos, retain }, err => {
  24. // console.log(`发布数据--${payload}===broker:${broker}`)
  25. logWithTimestamp(`发布数据--${payload}===broker:${broker}`)
  26. // 关键:等底层 socket 的 buffer 清空
  27. client.stream.on('drain', () => {
  28. client.end(true) // true = 强制 flush 再关闭
  29. logWithTimestamp(`drain发布完成 topic : ${topic}`)
  30. resolve(null)
  31. })
  32. logWithTimestamp(`发布完成 topic : ${topic}`)
  33. if (err) reject(err)
  34. else resolve(null)
  35. });
  36. })
  37. client.on('error', reject)
  38. })
  39. },
  40. // 浏览器日志输出到终端
  41. browserLog(message) {
  42. console.log('[Browser Console]', message)
  43. return null
  44. }
  45. })
  46. return require('./cypress/plugins/index.js')(on, config);
  47. },
  48. },
  49. });