"""E2E: Mappings page with flat-row list, sorting, multi-CODMAT modal.""" import pytest from playwright.sync_api import Page, expect pytestmark = pytest.mark.e2e @pytest.fixture(autouse=True) def navigate_to_mappings(page: Page, app_url: str): page.goto(f"{app_url}/mappings") page.wait_for_load_state("networkidle") def test_mappings_page_loads(page: Page): """Verify mappings page renders.""" expect(page.locator("h4")).to_contain_text("Mapari SKU") def test_flat_list_container_exists(page: Page): """Verify the flat-row list container is rendered.""" container = page.locator("#mappingsFlatList") expect(container).to_be_visible() # Should have at least one flat-row (data or empty message) rows = container.locator(".flat-row") assert rows.count() >= 1, "Expected at least one flat-row in the list" def test_show_inactive_toggle_exists(page: Page): """R5: Verify 'Arata inactive' toggle is present.""" toggle = page.locator("#showInactive") expect(toggle).to_be_visible() label = page.locator("label[for='showInactive']") expect(label).to_contain_text("Arata inactive") def test_show_deleted_toggle_exists(page: Page): """Verify 'Arata sterse' toggle is present.""" toggle = page.locator("#showDeleted") expect(toggle).to_be_visible() label = page.locator("label[for='showDeleted']") expect(label).to_contain_text("Arata sterse") def test_add_modal_multi_codmat(page: Page): """R11: Verify the add mapping modal supports multiple CODMAT lines.""" # "Formular complet" opens the full modal page.locator("button[data-bs-target='#addModal']").first.click() page.wait_for_timeout(500) codmat_lines = page.locator("#codmatLines .codmat-line") assert codmat_lines.count() >= 1, "Expected at least one CODMAT line in modal" # Click "+ CODMAT" button to add another line page.locator("#addModal button", has_text="CODMAT").click() page.wait_for_timeout(300) assert codmat_lines.count() >= 2, "Expected a second CODMAT line after clicking + CODMAT" # Second line must have a remove button remove_btns = page.locator("#codmatLines .codmat-line:nth-child(2) .qm-rm-btn") assert remove_btns.count() >= 1, "Second CODMAT line is missing remove button" def test_search_input_exists(page: Page): """Verify search input is present with the correct placeholder.""" search = page.locator("#searchInput") expect(search).to_be_visible() expect(search).to_have_attribute("placeholder", "Cauta SKU, CODMAT sau denumire...") def test_pagination_exists(page: Page): """Verify pagination containers are in DOM.""" expect(page.locator("#mappingsPagTop")).to_be_attached() expect(page.locator("#mappingsPagBottom")).to_be_attached() def test_inline_add_button_exists(page: Page): """Verify 'Adauga Mapare' button is present.""" btn = page.locator("button", has_text="Adauga Mapare") expect(btn).to_be_visible()