chore: bump version to 0.1444

This commit is contained in:
arkon
2026-01-31 04:44:46 +01:00
parent 2a8882a94b
commit 6123ce8ba9
16 changed files with 2465 additions and 141 deletions
+66 -2
View File
@@ -127,8 +127,8 @@ describe('Mobile Safari E2E', () => {
// Use tap instead of click for the Claude button
await tap(page, '.btn-toolbar.btn-claude');
// Wait for session tab to appear
await page.waitForSelector('.session-tab', { timeout: E2E_TIMEOUTS.SESSION_CREATE });
// Wait for active session tab to appear (not just any tab)
await page.waitForSelector('.session-tab.active', { timeout: E2E_TIMEOUTS.SESSION_CREATE });
// Verify tab is visible
const tabVisible = await page.isVisible('.session-tab.active');
@@ -230,6 +230,70 @@ describe('Mobile Safari E2E', () => {
}
}, E2E_TIMEOUTS.TEST);
it('should have terminal with at least 40 columns on mobile', async () => {
let browser: MobileBrowserFixture | null = null;
const caseName = generateCaseName('mobile-terminal-cols');
try {
browser = await createMobileSafariFixture(MOBILE_VIEWPORTS.IPHONE_17_PRO);
const { page } = browser;
cleanup.trackCase(caseName);
await page.goto(`${serverFixture!.baseUrl}`, { waitUntil: 'domcontentloaded' });
// Wait for terminal initialization and mobile detection
await page.waitForTimeout(1500);
// Create case and start session
await fetch(`${serverFixture!.baseUrl}/api/cases`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: caseName }),
});
await page.reload({ waitUntil: 'domcontentloaded' });
await page.waitForTimeout(500);
await page.selectOption('#quickStartCase', caseName);
await tap(page, '.btn-toolbar.btn-claude');
// Wait for session to start
await page.waitForSelector('.session-tab.active', { timeout: E2E_TIMEOUTS.SESSION_CREATE });
// Wait for terminal to be properly initialized
await page.waitForTimeout(1500);
// Check terminal container has reasonable width (min-width: 280px in CSS)
const containerWidth = await page.$eval('#terminalContainer', (el) => {
return el.getBoundingClientRect().width;
});
// Container should have at least 280px width (our CSS minimum)
expect(containerWidth).toBeGreaterThanOrEqual(280);
// Check that xterm element exists (canvas may not be visible due to z-index/overlay)
const xtermExists = await page.$('.xterm') !== null;
expect(xtermExists).toBe(true);
// Verify xterm container has reasonable width
const xtermWidth = await page.$eval('.xterm', (el) => {
return el.getBoundingClientRect().width;
});
// xterm should have at least 280px width
expect(xtermWidth).toBeGreaterThanOrEqual(280);
// Track for cleanup
const response = await fetch(`${serverFixture!.baseUrl}/api/sessions`);
const data = await response.json();
if (data?.length > 0) {
cleanup.trackSession(data[data.length - 1].id);
}
} finally {
if (browser) {
await destroyMobileBrowserFixture(browser);
}
}
}, E2E_TIMEOUTS.TEST);
it('should render properly on tablet viewport', async () => {
let browser: MobileBrowserFixture | null = null;