cypress.config.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. baseUrl: null,//'http://localhost:10086/#/pages/index/index', // Adjust this to match your application's base
  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. browserLog(message) {
  41. console.log('[Browser Console]', message)
  42. return null
  43. }
  44. })
  45. return require('./cypress/plugins/index.js')(on, config);
  46. },
  47. },
  48. });