Replaced the blank base64 encoded logo with the actual SmoothSchedule logo in the email rendering pipeline. A Playwright E2E test was run to verify that the logo is correctly displayed in the email preview modal, ensuring it loads with natural dimensions and is visible.
95 lines
4.2 KiB
TypeScript
95 lines
4.2 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
test.describe('Email Template Editor', () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
// Login with real credentials on the pixel8ed subdomain
|
|
await page.goto('http://pixel8ed.lvh.me:5173/login');
|
|
|
|
// Wait for the login form
|
|
await expect(page.locator('input[type="email"]')).toBeVisible({ timeout: 10000 });
|
|
|
|
// Fill in the login form
|
|
await page.fill('input[type="email"]', 'timm50@hotmail.com');
|
|
await page.fill('input[type="password"]', 'starry12');
|
|
|
|
// Click sign in button
|
|
await page.click('button[type="submit"]');
|
|
|
|
// Wait for login to complete and redirect to dashboard
|
|
await page.waitForURL('**/dashboard**', { timeout: 20000 });
|
|
});
|
|
|
|
test('should check site builder works correctly', async ({ page }) => {
|
|
// Navigate directly to site builder
|
|
await page.goto('http://pixel8ed.lvh.me:5173/dashboard/site-editor', { waitUntil: 'networkidle' });
|
|
await page.waitForTimeout(3000);
|
|
|
|
// Take screenshot
|
|
await page.screenshot({ path: 'test-results/site-builder-state.png', fullPage: true });
|
|
|
|
// Check iframe content for multiple component types
|
|
const iframe = page.frameLocator('iframe').first();
|
|
try {
|
|
const iframeContent = await iframe.locator('body').textContent({ timeout: 3000 });
|
|
console.log('Site builder iframe content (first 500 chars):', iframeContent?.substring(0, 500));
|
|
|
|
// Site builder should have diverse content
|
|
expect(iframeContent?.length).toBeGreaterThan(100);
|
|
} catch (e) {
|
|
console.log('No iframe content found');
|
|
}
|
|
});
|
|
|
|
test('should check email template editor with actual API data', async ({ page }) => {
|
|
// Navigate directly to the dedicated email template editor page
|
|
await page.goto('http://pixel8ed.lvh.me:5173/dashboard/email-template-editor/welcome', { waitUntil: 'networkidle' });
|
|
|
|
// Wait for editor to load - need to wait for Puck to render
|
|
await expect(page.getByText(/Email Subject/i)).toBeVisible({ timeout: 10000 });
|
|
|
|
// Wait for Puck editor to appear (Components heading)
|
|
await expect(page.getByRole('heading', { name: 'Components' })).toBeVisible({ timeout: 15000 });
|
|
await page.waitForTimeout(3000);
|
|
|
|
// Take screenshot
|
|
await page.screenshot({ path: 'test-results/email-editor-api-data.png', fullPage: true });
|
|
|
|
// Count component types shown
|
|
const emailHeaderCount = await page.locator('text="Email Header"').count();
|
|
const emailHeadingCount = await page.locator('text="Email Heading"').count();
|
|
const emailTextCount = await page.locator('text="Email Text"').count();
|
|
const emailButtonCount = await page.locator('text="Email Button"').count();
|
|
const emailSpacerCount = await page.locator('text="Email Spacer"').count();
|
|
const emailFooterCount = await page.locator('text="Email Footer"').count();
|
|
|
|
console.log('Component type counts in editor:');
|
|
console.log(' Email Header:', emailHeaderCount);
|
|
console.log(' Email Heading:', emailHeadingCount);
|
|
console.log(' Email Text:', emailTextCount);
|
|
console.log(' Email Button:', emailButtonCount);
|
|
console.log(' Email Spacer:', emailSpacerCount);
|
|
console.log(' Email Footer:', emailFooterCount);
|
|
|
|
// Check iframe content for diverse component rendering
|
|
const iframe = page.frameLocator('iframe').first();
|
|
try {
|
|
const iframeContent = await iframe.locator('body').textContent({ timeout: 3000 });
|
|
console.log('Iframe content (first 800 chars):', iframeContent?.substring(0, 800));
|
|
|
|
// Content should show diverse email template components
|
|
expect(iframeContent?.length).toBeGreaterThan(100);
|
|
} catch (e) {
|
|
console.log('No iframe content found');
|
|
}
|
|
|
|
// With correct config, we should see multiple different component types
|
|
// If the bug is fixed, no single component type should dominate
|
|
const maxCount = Math.max(emailHeaderCount, emailHeadingCount, emailTextCount,
|
|
emailButtonCount, emailSpacerCount, emailFooterCount);
|
|
console.log('Max single component type count:', maxCount);
|
|
|
|
// A working editor should have reasonable distribution (max ~4-5 per type)
|
|
expect(maxCount).toBeLessThanOrEqual(5);
|
|
});
|
|
});
|