diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index afbb74e..cbe0a8a 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -14,6 +14,9 @@ on: jobs: copilot-setup-steps: runs-on: ubuntu-latest + env: + TESTS_MQTT_BROKER_HOST: localhost + TESTS_MQTT_BROKER_PORT: 1883 steps: - name: Checkout code diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index de0e19a..dd38650 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -68,6 +68,19 @@ jobs: volumes: - ./:/app options: --user root + env: + TESTS_MQTT_BROKER_HOST: mosquitto + TESTS_MQTT_BROKER_PORT: 1883 + services: + mosquitto: + image: eclipse-mosquitto:2 + ports: + - 1883:1883 + options: >- + --health-cmd "mosquitto_sub -t '$SYS/#' -C 1" + --health-interval 10s + --health-timeout 5s + --health-retries 5 steps: - uses: actions/checkout@v4 with: diff --git a/src/spec/demoVideo.ts b/src/spec/demoVideo.ts index 2633b20..5d78db8 100644 --- a/src/spec/demoVideo.ts +++ b/src/spec/demoVideo.ts @@ -48,7 +48,9 @@ setTimeout( const runningUiTestOnCi = os.platform() === 'darwin' ? [] : ['--runningUiTestOnCi'] async function doStuff() { - console.log('Waiting for MQTT Broker on port 1880 (no auth)') + const brokerHost = process.env.TESTS_MQTT_BROKER_HOST || '127.0.0.1' + const brokerPort = process.env.TESTS_MQTT_BROKER_PORT || '1883' + console.log(`Waiting for MQTT Broker at ${brokerHost}:${brokerPort} (no auth)`) await mockMqtt() console.log('Starting playwright/electron') @@ -73,7 +75,7 @@ async function doStuff() { const scenes = new SceneBuilder() await scenes.record('connect', async () => { - await connectTo('127.0.0.1', page) + await connectTo(brokerHost, page) await MockSparkplug.run() // Start sparkplug client after connect or birth topics will be missed await sleep(1000) }) diff --git a/src/spec/expandTopic.spec.ts b/src/spec/expandTopic.spec.ts index 8dd6cff..d8b1431 100644 --- a/src/spec/expandTopic.spec.ts +++ b/src/spec/expandTopic.spec.ts @@ -55,7 +55,8 @@ describe('expandTopic UI Helper - Isolated Test', function () { await page.locator('//label[contains(text(), "Host")]/..//input').waitFor({ timeout: 10000 }) console.log('Connecting to MQTT broker...') - await connectTo('127.0.0.1', page) + const brokerHost = process.env.TESTS_MQTT_BROKER_HOST || '127.0.0.1' + await connectTo(brokerHost, page) await sleep(3000) // Give time for topics to load console.log('Setup complete') }) diff --git a/src/spec/leakTest.ts b/src/spec/leakTest.ts index 80c0491..21d9cbc 100644 --- a/src/spec/leakTest.ts +++ b/src/spec/leakTest.ts @@ -15,7 +15,9 @@ process.on('unhandledRejection' as any, (error: Error | any) => { const runningUiTestOnCi = os.platform() === 'darwin' ? [] : ['--runningUiTestOnCi'] async function doStuff() { - console.log('Waiting for MQTT Broker on port 1880 (no auth)') + const brokerHost = process.env.TESTS_MQTT_BROKER_HOST || '127.0.0.1' + const brokerPort = process.env.TESTS_MQTT_BROKER_PORT || '1883' + console.log(`Waiting for MQTT Broker at ${brokerHost}:${brokerPort} (no auth)`) await mockMqtt() console.log('Starting playwright/electron') @@ -39,7 +41,7 @@ async function doStuff() { await createFakeMousePointer(browser) // Wait for Username input to be visible await browser.locator('//label[contains(text(), "Username")]/..//input') - await connectTo('127.0.0.1', browser) + await connectTo(brokerHost, browser) stopMqttUpdates() await sleep(1000, true) const heapDump = await getHeapDump(browser) diff --git a/src/spec/mock-mqtt-test.ts b/src/spec/mock-mqtt-test.ts index 9a1b74f..910ba05 100644 --- a/src/spec/mock-mqtt-test.ts +++ b/src/spec/mock-mqtt-test.ts @@ -24,7 +24,6 @@ export async function createTestMock(): Promise { console.log(`Connecting to MQTT broker at ${brokerUrl}`) return new Promise((resolve, reject) => { - console.log('Connecting to MQTT broker at mqtt://127.0.0.1:1883...') const client = mqtt.connect(brokerUrl, { username: '', password: '', diff --git a/src/spec/mock-mqtt.ts b/src/spec/mock-mqtt.ts index f9f2af8..56095c7 100644 --- a/src/spec/mock-mqtt.ts +++ b/src/spec/mock-mqtt.ts @@ -11,7 +11,14 @@ function startServer(): Promise { function connectMqtt(): Promise { return new Promise(resolve => { - const client = mqtt.connect('mqtt://127.0.0.1:1883', { + // Use TESTS_MQTT_BROKER_HOST from environment, default to localhost + const brokerHost = process.env.TESTS_MQTT_BROKER_HOST || '127.0.0.1' + const brokerPort = process.env.TESTS_MQTT_BROKER_PORT || '1883' + const brokerUrl = `mqtt://${brokerHost}:${brokerPort}` + + console.log(`Connecting to MQTT broker at ${brokerUrl}`) + + const client = mqtt.connect(brokerUrl, { username: '', password: '', }) diff --git a/src/spec/mock-sparkplugb.ts b/src/spec/mock-sparkplugb.ts index 770c364..7a36ef1 100644 --- a/src/spec/mock-sparkplugb.ts +++ b/src/spec/mock-sparkplugb.ts @@ -23,8 +23,10 @@ export interface MockSparkplugClient { } const sample = (function () { + const brokerHost = process.env.TESTS_MQTT_BROKER_HOST || '127.0.0.1' + const brokerPort = process.env.TESTS_MQTT_BROKER_PORT || '1883' let config = { - serverUrl: 'tcp://127.0.0.1:1883', + serverUrl: `tcp://${brokerHost}:${brokerPort}`, username: '', password: '', groupId: 'Sparkplug Devices',