import { expect, test } from '@playwright/test'; test.describe('Deduct Situation Panel Options', () => { test('It successfully requests deduction from the intelligence API', async ({ page }) => { await page.goto('/?view=global'); // MOCK the backend deduct-situation RPC response UNLESS testing real LLM flows if (!process.env.TEST_REAL_LLM) { await page.route('**/api/intelligence/v1/deduct-situation', async (route) => { const json = { analysis: '### Mocked AI Analysis\n- This is a simulated response.\n- Situation is stable.', model: 'mocked-e2e-model', provider: 'groq', }; await route.fulfill({ json }); }); } // Open CMD palette and search for deduction panel await page.keyboard.press('ControlOrMeta+k'); await page.waitForSelector('.command-palette'); await page.fill('.command-palette input', 'deduct'); await page.click('text="Jump to Deduct Situation"'); // Ensure the panel is visible and ready const panel = page.locator('.wm-panel', { hasText: 'DEDUCT SITUATION' }); await expect(panel).toBeVisible(); // Fill in the text area query const textarea = panel.locator('textarea').first(); await textarea.fill('What is the geopolitical status of the Pacific?'); // Click analyze const analyzeBtn = panel.locator('button', { hasText: 'Analyze' }); await analyzeBtn.click(); // Verify loading state await expect(panel.locator('text="Analyzing timeline and impact..."')).toBeVisible(); // Verify the resolved output is rendered if (!process.env.TEST_REAL_LLM) { await expect(panel.locator('text="Mocked AI Analysis"')).toBeVisible({ timeout: 10000 }); await expect(panel.locator('text="Situation is stable."')).toBeVisible(); } else { // If testing against a real local LLM or cloud, just expect some markdown output block to appear // The API might take a while depending on local hardware / provider limits await expect(panel.locator('.deduction-result')).not.toBeEmpty({ timeout: 30000 }); } }); });