From bcf76c65e734c8a1f661da59f0874fceaf1aac94 Mon Sep 17 00:00:00 2001 From: Eugene Burmakin Date: Sun, 30 Nov 2025 17:17:37 +0100 Subject: [PATCH] Fix spec problem --- e2e/v2/helpers/setup.js | 16 ++++++++-------- e2e/v2/map/area-selection.spec.js | 6 +++--- e2e/v2/map/layers/heatmap.spec.js | 4 ++-- e2e/v2/map/layers/points.spec.js | 6 +++--- e2e/v2/map/layers/routes.spec.js | 12 ++++++------ e2e/v2/map/search.spec.js | 2 +- e2e/v2/map/settings.spec.js | 4 ++-- e2e/v2/realtime/family.spec.js | 2 +- playwright.config.js | 2 +- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/e2e/v2/helpers/setup.js b/e2e/v2/helpers/setup.js index 1bc5d6ef..783f5f79 100644 --- a/e2e/v2/helpers/setup.js +++ b/e2e/v2/helpers/setup.js @@ -44,7 +44,7 @@ export async function waitForMapLibre(page, timeout = 10000) { // Wait for map instance to exist and style to be loaded await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return false; const app = window.Stimulus || window.Application; if (!app) return false; @@ -67,7 +67,7 @@ export async function waitForMapLibre(page, timeout = 10000) { */ export async function hasMapInstance(page) { return await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return false; // Get Stimulus controller instance @@ -86,7 +86,7 @@ export async function hasMapInstance(page) { */ export async function getMapZoom(page) { return await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return null; const app = window.Stimulus || window.Application; @@ -104,7 +104,7 @@ export async function getMapZoom(page) { */ export async function getMapCenter(page) { return await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return null; const app = window.Stimulus || window.Application; @@ -125,7 +125,7 @@ export async function getMapCenter(page) { */ export async function getPointsSourceData(page) { return await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return { hasSource: false, featureCount: 0, features: [] }; const app = window.Stimulus || window.Application; @@ -154,7 +154,7 @@ export async function getPointsSourceData(page) { */ export async function hasLayer(page, layerId) { return await page.evaluate((id) => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return false; const app = window.Stimulus || window.Application; @@ -207,7 +207,7 @@ export async function hasPopup(page) { */ export async function getLayerVisibility(page, layerId) { return await page.evaluate((id) => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return false; const app = window.Stimulus || window.Application; @@ -228,7 +228,7 @@ export async function getLayerVisibility(page, layerId) { */ export async function getRoutesSourceData(page) { return await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]'); + const element = document.querySelector('[data-controller*="maps-v2"]'); if (!element) return { hasSource: false, featureCount: 0, features: [] }; const app = window.Stimulus || window.Application; diff --git a/e2e/v2/map/area-selection.spec.js b/e2e/v2/map/area-selection.spec.js index f11ad6d2..b35c48f0 100644 --- a/e2e/v2/map/area-selection.spec.js +++ b/e2e/v2/map/area-selection.spec.js @@ -50,7 +50,7 @@ test.describe('Area Selection in Maps V2', () => { // Check if selection layer has been added to map const hasSelectionLayer = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app.getControllerForElementAndIdentifier(element, 'maps-v2') return controller.selectionLayer !== undefined @@ -295,7 +295,7 @@ test.describe('Area Selection in Maps V2', () => { // Check if selected points layer exists const hasSelectedPointsLayer = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.selectedPointsLayer !== undefined @@ -305,7 +305,7 @@ test.describe('Area Selection in Maps V2', () => { if (hasSelectedPointsLayer) { // Verify layer is on the map const layerExistsOnMap = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getLayer('selected-points') !== undefined diff --git a/e2e/v2/map/layers/heatmap.spec.js b/e2e/v2/map/layers/heatmap.spec.js index 6fd6a4d6..8dd3a4fb 100644 --- a/e2e/v2/map/layers/heatmap.spec.js +++ b/e2e/v2/map/layers/heatmap.spec.js @@ -22,7 +22,7 @@ test.describe('Heatmap Layer', () => { // Wait for heatmap layer to be created await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return false const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') @@ -30,7 +30,7 @@ test.describe('Heatmap Layer', () => { }, { timeout: 3000 }).catch(() => false) const hasHeatmap = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return false const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') diff --git a/e2e/v2/map/layers/points.spec.js b/e2e/v2/map/layers/points.spec.js index c4f95d1c..4f0cd91f 100644 --- a/e2e/v2/map/layers/points.spec.js +++ b/e2e/v2/map/layers/points.spec.js @@ -19,7 +19,7 @@ test.describe('Points Layer', () => { test('displays points layer', async ({ page }) => { // Wait for points layer to be added await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getLayer('points') !== undefined @@ -31,7 +31,7 @@ test.describe('Points Layer', () => { test('loads and displays point data', async ({ page }) => { await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getSource('points-source') !== undefined @@ -47,7 +47,7 @@ test.describe('Points Layer', () => { test('points source contains valid GeoJSON features', async ({ page }) => { // Wait for source to be added await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getSource('points-source') !== undefined diff --git a/e2e/v2/map/layers/routes.spec.js b/e2e/v2/map/layers/routes.spec.js index 1b3880cb..bbfcb959 100644 --- a/e2e/v2/map/layers/routes.spec.js +++ b/e2e/v2/map/layers/routes.spec.js @@ -21,7 +21,7 @@ test.describe('Routes Layer', () => { test.describe('Layer Existence', () => { test('routes layer exists on map', async ({ page }) => { await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return false const app = window.Stimulus || window.Application if (!app) return false @@ -37,7 +37,7 @@ test.describe('Routes Layer', () => { test.describe('Data Source', () => { test('routes source has data', async ({ page }) => { await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return false const app = window.Stimulus || window.Application if (!app) return false @@ -92,7 +92,7 @@ test.describe('Routes Layer', () => { test.describe('Styling', () => { test('routes have solid color', async ({ page }) => { await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return false const app = window.Stimulus || window.Application if (!app) return false @@ -101,7 +101,7 @@ test.describe('Routes Layer', () => { }, { timeout: 20000 }) const routeLayerInfo = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return null const app = window.Stimulus || window.Application @@ -132,7 +132,7 @@ test.describe('Routes Layer', () => { test.describe('Layer Order', () => { test('routes layer renders below points layer', async ({ page }) => { await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getLayer('routes') !== undefined && @@ -140,7 +140,7 @@ test.describe('Routes Layer', () => { }, { timeout: 10000 }) const layerOrder = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return null const app = window.Stimulus || window.Application diff --git a/e2e/v2/map/search.spec.js b/e2e/v2/map/search.spec.js index 31a8f588..7fd17c26 100644 --- a/e2e/v2/map/search.spec.js +++ b/e2e/v2/map/search.spec.js @@ -100,7 +100,7 @@ test.describe('Location Search', () => { await page.waitForTimeout(1000) const hasSearchManager = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') if (!element) return false const app = window.Stimulus || window.Application diff --git a/e2e/v2/map/settings.spec.js b/e2e/v2/map/settings.spec.js index 61052ba1..ba4922f1 100644 --- a/e2e/v2/map/settings.spec.js +++ b/e2e/v2/map/settings.spec.js @@ -57,7 +57,7 @@ test.describe('Map Settings', () => { test('points layer visibility matches toggle state', async ({ page }) => { // Wait for points layer to exist await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getLayer('points') !== undefined @@ -79,7 +79,7 @@ test.describe('Map Settings', () => { test('routes layer visibility matches toggle state', async ({ page }) => { // Wait for routes layer to exist await page.waitForFunction(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getLayer('routes') !== undefined diff --git a/e2e/v2/realtime/family.spec.js b/e2e/v2/realtime/family.spec.js index 7b022b0e..9e17eba3 100644 --- a/e2e/v2/realtime/family.spec.js +++ b/e2e/v2/realtime/family.spec.js @@ -14,7 +14,7 @@ test.describe('Realtime Family Tracking', () => { test.skip('family layer exists but is hidden by default', async ({ page }) => { // Family layer is created but hidden until ActionCable data arrives const layerExists = await page.evaluate(() => { - const element = document.querySelector('[data-controller="maps-v2"]') + const element = document.querySelector('[data-controller*="maps-v2"]') const app = window.Stimulus || window.Application const controller = app?.getControllerForElementAndIdentifier(element, 'maps-v2') return controller?.map?.getLayer('family') !== undefined diff --git a/playwright.config.js b/playwright.config.js index 64657c6f..5c232f77 100644 --- a/playwright.config.js +++ b/playwright.config.js @@ -58,7 +58,7 @@ export default defineConfig({ /* Run your local dev server before starting the tests */ webServer: { - command: 'OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES RAILS_ENV=test rails server -p 3000', + command: 'OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES RAILS_ENV=development rails server -p 3000', url: 'http://localhost:3000', reuseExistingServer: !process.env.CI, timeout: 120 * 1000,