fix: DockerSecretsResolver - don't normalize absolute paths like /var/www/html/...
Some checks failed
Deploy Application / deploy (push) Has been cancelled

This commit is contained in:
2025-11-24 21:28:25 +01:00
parent 4eb7134853
commit 77abc65cd7
1327 changed files with 91915 additions and 9909 deletions

View File

@@ -0,0 +1,207 @@
import { test, expect } from '@playwright/test';
/**
* LiveComponents: Swap Strategies Tests
*
* Tests different swap strategies (innerHTML, outerHTML, beforebegin, afterbegin, afterend, beforeend, none)
*/
test.describe('LiveComponents Swap Strategies', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/');
});
test('should support innerHTML swap (default)', async ({ page }) => {
// This test assumes there's a component with a button that uses innerHTML swap
// Since we don't have a test page yet, we'll skip if no components found
const components = page.locator('[data-live-component]');
const count = await components.count();
if (count === 0) {
test.skip();
return;
}
// Find a button with data-live-action
const actionButton = page.locator('[data-live-action]').first();
const buttonCount = await actionButton.count();
if (buttonCount === 0) {
test.skip();
return;
}
// Get initial HTML
const component = components.first();
const initialHtml = await component.innerHTML();
// Click button (should use innerHTML by default)
await actionButton.click();
// Wait for update
await page.waitForTimeout(1000);
// HTML should have changed (or stayed same if no update)
const newHtml = await component.innerHTML();
// At minimum, the action should have executed
expect(component).toBeVisible();
});
test('should support outerHTML swap', async ({ page }) => {
// This test requires a component with data-lc-swap="outerHTML"
const swapButton = page.locator('[data-lc-swap="outerHTML"]');
const count = await swapButton.count();
if (count === 0) {
test.skip();
return;
}
const targetElement = swapButton.first();
const initialTag = await targetElement.evaluate(el => el.tagName);
// Click to trigger swap
await targetElement.click();
// Wait for update
await page.waitForTimeout(1000);
// Element should be replaced (tag might change)
const newElement = page.locator(swapButton.first().locator('xpath=..')).first();
expect(newElement).toBeVisible();
});
test('should support beforebegin swap', async ({ page }) => {
const swapButton = page.locator('[data-lc-swap="beforebegin"]');
const count = await swapButton.count();
if (count === 0) {
test.skip();
return;
}
const button = swapButton.first();
const parent = button.locator('xpath=..');
// Get initial child count
const initialChildCount = await parent.evaluate(el => el.children.length);
// Click to trigger swap
await button.click();
// Wait for update
await page.waitForTimeout(1000);
// Should have more children (content inserted before button)
const newChildCount = await parent.evaluate(el => el.children.length);
expect(newChildCount).toBeGreaterThanOrEqual(initialChildCount);
});
test('should support afterbegin swap', async ({ page }) => {
const swapButton = page.locator('[data-lc-swap="afterbegin"]');
const count = await swapButton.count();
if (count === 0) {
test.skip();
return;
}
const button = swapButton.first();
const target = page.locator(button.getAttribute('data-lc-target') || '[data-live-component]').first();
// Get initial first child
const initialFirstChild = await target.evaluate(el => el.firstElementChild?.tagName);
// Click to trigger swap
await button.click();
// Wait for update
await page.waitForTimeout(1000);
// First child should have changed or new content added
const newFirstChild = await target.evaluate(el => el.firstElementChild?.tagName);
expect(target).toBeVisible();
});
test('should support afterend swap', async ({ page }) => {
const swapButton = page.locator('[data-lc-swap="afterend"]');
const count = await swapButton.count();
if (count === 0) {
test.skip();
return;
}
const button = swapButton.first();
const parent = button.locator('xpath=..');
// Get initial child count
const initialChildCount = await parent.evaluate(el => el.children.length);
// Click to trigger swap
await button.click();
// Wait for update
await page.waitForTimeout(1000);
// Should have more children (content inserted after button)
const newChildCount = await parent.evaluate(el => el.children.length);
expect(newChildCount).toBeGreaterThanOrEqual(initialChildCount);
});
test('should support beforeend swap', async ({ page }) => {
const swapButton = page.locator('[data-lc-swap="beforeend"]');
const count = await swapButton.count();
if (count === 0) {
test.skip();
return;
}
const button = swapButton.first();
const target = page.locator(button.getAttribute('data-lc-target') || '[data-live-component]').first();
// Get initial last child
const initialLastChild = await target.evaluate(el => el.lastElementChild?.tagName);
// Click to trigger swap
await button.click();
// Wait for update
await page.waitForTimeout(1000);
// Last child should have changed or new content added
const newLastChild = await target.evaluate(el => el.lastElementChild?.tagName);
expect(target).toBeVisible();
});
test('should support none swap (no DOM update)', async ({ page }) => {
const swapButton = page.locator('[data-lc-swap="none"]');
const count = await swapButton.count();
if (count === 0) {
test.skip();
return;
}
const button = swapButton.first();
const target = page.locator(button.getAttribute('data-lc-target') || '[data-live-component]').first();
// Get initial HTML
const initialHtml = await target.innerHTML();
// Click to trigger action (should not update DOM)
await button.click();
// Wait a bit
await page.waitForTimeout(1000);
// HTML should remain the same (no DOM update)
const newHtml = await target.innerHTML();
expect(newHtml).toBe(initialHtml);
});
});