Configure MQTT broker hostname based on execution context (#993)

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
This commit is contained in:
Copilot
2025-12-24 08:23:42 +01:00
committed by GitHub
parent f946ae39d7
commit c0b2950ecb
8 changed files with 37 additions and 8 deletions

View File

@@ -14,6 +14,9 @@ on:
jobs: jobs:
copilot-setup-steps: copilot-setup-steps:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
TESTS_MQTT_BROKER_HOST: localhost
TESTS_MQTT_BROKER_PORT: 1883
steps: steps:
- name: Checkout code - name: Checkout code

View File

@@ -68,6 +68,19 @@ jobs:
volumes: volumes:
- ./:/app - ./:/app
options: --user root 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: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:

View File

@@ -48,7 +48,9 @@ setTimeout(
const runningUiTestOnCi = os.platform() === 'darwin' ? [] : ['--runningUiTestOnCi'] const runningUiTestOnCi = os.platform() === 'darwin' ? [] : ['--runningUiTestOnCi']
async function doStuff() { 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() await mockMqtt()
console.log('Starting playwright/electron') console.log('Starting playwright/electron')
@@ -73,7 +75,7 @@ async function doStuff() {
const scenes = new SceneBuilder() const scenes = new SceneBuilder()
await scenes.record('connect', async () => { 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 MockSparkplug.run() // Start sparkplug client after connect or birth topics will be missed
await sleep(1000) await sleep(1000)
}) })

View File

@@ -55,7 +55,8 @@ describe('expandTopic UI Helper - Isolated Test', function () {
await page.locator('//label[contains(text(), "Host")]/..//input').waitFor({ timeout: 10000 }) await page.locator('//label[contains(text(), "Host")]/..//input').waitFor({ timeout: 10000 })
console.log('Connecting to MQTT broker...') 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 await sleep(3000) // Give time for topics to load
console.log('Setup complete') console.log('Setup complete')
}) })

View File

@@ -15,7 +15,9 @@ process.on('unhandledRejection' as any, (error: Error | any) => {
const runningUiTestOnCi = os.platform() === 'darwin' ? [] : ['--runningUiTestOnCi'] const runningUiTestOnCi = os.platform() === 'darwin' ? [] : ['--runningUiTestOnCi']
async function doStuff() { 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() await mockMqtt()
console.log('Starting playwright/electron') console.log('Starting playwright/electron')
@@ -39,7 +41,7 @@ async function doStuff() {
await createFakeMousePointer(browser) await createFakeMousePointer(browser)
// Wait for Username input to be visible // Wait for Username input to be visible
await browser.locator('//label[contains(text(), "Username")]/..//input') await browser.locator('//label[contains(text(), "Username")]/..//input')
await connectTo('127.0.0.1', browser) await connectTo(brokerHost, browser)
stopMqttUpdates() stopMqttUpdates()
await sleep(1000, true) await sleep(1000, true)
const heapDump = await getHeapDump(browser) const heapDump = await getHeapDump(browser)

View File

@@ -24,7 +24,6 @@ export async function createTestMock(): Promise<mqtt.MqttClient> {
console.log(`Connecting to MQTT broker at ${brokerUrl}`) console.log(`Connecting to MQTT broker at ${brokerUrl}`)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
console.log('Connecting to MQTT broker at mqtt://127.0.0.1:1883...')
const client = mqtt.connect(brokerUrl, { const client = mqtt.connect(brokerUrl, {
username: '', username: '',
password: '', password: '',

View File

@@ -11,7 +11,14 @@ function startServer(): Promise<mqtt.MqttClient> {
function connectMqtt(): Promise<mqtt.MqttClient> { function connectMqtt(): Promise<mqtt.MqttClient> {
return new Promise(resolve => { 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: '', username: '',
password: '', password: '',
}) })

View File

@@ -23,8 +23,10 @@ export interface MockSparkplugClient {
} }
const sample = (function () { 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 = { let config = {
serverUrl: 'tcp://127.0.0.1:1883', serverUrl: `tcp://${brokerHost}:${brokerPort}`,
username: '', username: '',
password: '', password: '',
groupId: 'Sparkplug Devices', groupId: 'Sparkplug Devices',