package playwright_test import ( "context" "testing" "time" "github.com/fmartingr/hako/e2e/e2eutil" "github.com/stretchr/testify/require" ) func TestExtractors_ViewList(t *testing.T) { ctx := context.Background() // Start Hako container container, baseURL, err := e2eutil.StartHakoContainer(ctx, t) require.NoError(t, err, "Failed to start Hako container") defer container.Terminate(ctx) // Setup Playwright _, browser, err := e2eutil.NewPlaywright(t) require.NoError(t, err, "Failed to initialize Playwright") browserCtx, err := e2eutil.NewBrowserContext(browser, t) require.NoError(t, err, "Failed to create browser context") page, err := browserCtx.NewPage() require.NoError(t, err, "Failed to create new page") // Create test helper helper := e2eutil.NewTestHelper(t, "TestExtractors_ViewList", baseURL, page) // Login as admin err = helper.LoginAsAdmin() require.NoError(t, err, "Failed to login") // Navigate to extractors admin page err = helper.Navigate("/admin/extractors") require.NoError(t, err, "Failed to navigate to extractors page") time.Sleep(1 * time.Second) helper.Screenshot("extractors-list") // Verify we're on the extractors page helper.AssertURL("/admin/extractors") // Verify extractors list is visible extractorsVisible := helper.IsVisible(".extractor-list") require.True(t, extractorsVisible, "Extractors list should be visible") t.Log("View extractors list test completed successfully") } func TestExtractors_StatusDisplay(t *testing.T) { ctx := context.Background() // Start Hako container container, baseURL, err := e2eutil.StartHakoContainer(ctx, t) require.NoError(t, err, "Failed to start Hako container") defer container.Terminate(ctx) // Setup Playwright _, browser, err := e2eutil.NewPlaywright(t) require.NoError(t, err, "Failed to initialize Playwright") browserCtx, err := e2eutil.NewBrowserContext(browser, t) require.NoError(t, err, "Failed to create browser context") page, err := browserCtx.NewPage() require.NoError(t, err, "Failed to create new page") // Create test helper helper := e2eutil.NewTestHelper(t, "TestExtractors_StatusDisplay", baseURL, page) // Login as admin err = helper.LoginAsAdmin() require.NoError(t, err, "Failed to login") // Navigate to extractors admin page err = helper.Navigate("/admin/extractors") require.NoError(t, err, "Failed to navigate to extractors page") time.Sleep(1 * time.Second) helper.Screenshot("extractors-status") // Check for status indicators (Available/Unavailable) statusVisible := helper.IsVisible(".status-available") || helper.IsVisible(".status-unavailable") || helper.IsVisible("[class*='status']") || helper.IsVisible("td:has-text('Available')") || helper.IsVisible("td:has-text('Unavailable')") t.Logf("Status indicators visible: %v", statusVisible) if statusVisible { helper.Screenshot("extractors-with-status") } t.Log("Extractors status display test completed successfully") } func TestExtractors_SupportedTypes(t *testing.T) { ctx := context.Background() // Start Hako container container, baseURL, err := e2eutil.StartHakoContainer(ctx, t) require.NoError(t, err, "Failed to start Hako container") defer container.Terminate(ctx) // Setup Playwright _, browser, err := e2eutil.NewPlaywright(t) require.NoError(t, err, "Failed to initialize Playwright") browserCtx, err := e2eutil.NewBrowserContext(browser, t) require.NoError(t, err, "Failed to create browser context") page, err := browserCtx.NewPage() require.NoError(t, err, "Failed to create new page") // Create test helper helper := e2eutil.NewTestHelper(t, "TestExtractors_SupportedTypes", baseURL, page) // Login as admin err = helper.LoginAsAdmin() require.NoError(t, err, "Failed to login") // Navigate to extractors admin page err = helper.Navigate("/admin/extractors") require.NoError(t, err, "Failed to navigate to extractors page") time.Sleep(1 * time.Second) helper.Screenshot("extractors-supported-types") // Check for MIME type information mimeTypesVisible := helper.IsVisible("td:has-text('text/')") || helper.IsVisible("td:has-text('application/')") || helper.IsVisible("td:has-text('image/')") || helper.IsVisible(".mime-types") || helper.IsVisible("[class*='mime']") t.Logf("MIME types information visible: %v", mimeTypesVisible) if mimeTypesVisible { helper.Screenshot("extractors-with-mime-types") } t.Log("Extractors supported types test completed successfully") }