cypress.config.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { defineConfig } from 'cypress';
  2. import mqtt from 'mqtt'
  3. function logWithTimestamp(message, ...args) {
  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. baseUrl: 'http://localhost:10086/#/pages/index/index', // Adjust this to match your application's base URL
  13. // specPattern: '__e2e_test__/**/*.spec.ts',
  14. setupNodeEvents(on, config) {
  15. on('task', {
  16. // 参数:{ broker, topic, payload [, opts] }
  17. mqttPublish({ broker = 'ws://localhost:8083/mqtt', topic, payload, qos = 0, retain = false }) {
  18. return new Promise((resolve, reject) => {
  19. console.log('这里执行了吗')
  20. const client = mqtt.connect(broker)
  21. client.on('connect', () => {
  22. client.publish(topic, payload, { qos, retain }, err => {
  23. // console.log(`发布数据--${payload}===broker:${broker}`)
  24. logWithTimestamp(`发布数据--${payload}===broker:${broker}`)
  25. // 关键:等底层 socket 的 buffer 清空
  26. client.stream.on('drain', () => {
  27. client.end(true) // true = 强制 flush 再关闭
  28. logWithTimestamp(`drain发布完成 topic : ${topic}`)
  29. resolve(null)
  30. })
  31. logWithTimestamp(`发布完成 topic : ${topic}`)
  32. if (err) reject(err)
  33. else resolve(null)
  34. });
  35. })
  36. client.on('error', reject)
  37. })
  38. }
  39. })
  40. return require('./cypress/plugins/index.js')(on, config);
  41. },
  42. },
  43. });