Advertisement
djbob2000

Untitled

Jun 1st, 2025
505
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { test } from "@fernir2/saas-kit/test/fixtures";
  2. import { UiTester, setUiTestPage } from "@fernir2/saas-kit/test/fd-test-ui-tester";
  3. import { elements, elementPrefixes, elementSuffixes } from "@fernir2/saas-kit/src/meta/constants";
  4. import { tableElementSuffixes } from "@fernir2/saas-kit/src/fd/fd-component-toolbox";
  5. import { assertElementHaveCheckmark } from "@fernir2/saas-kit/fd-meta-tester-ui/page-objects";
  6. import { iconNames } from "@fernir2/saas-kit/fd-component-toolbox/icon";
  7.  
  8. test(
  9.     "Contact - when selecting multiple checkboxes in multi-browser " +
  10.         "then checkboxes are selected and relations are added",
  11.     async ({ page }) => {
  12.         // Arrange
  13.         setUiTestPage(page);
  14.         const uiTester = new UiTester(page);
  15.         const externalUrl = "https://saas-kit-ten.vercel.app";
  16.  
  17.         // Login to external site
  18.         await page.goto(externalUrl + "/sign-in");
  19.         await page.waitForLoadState("networkidle");
  20.         await page.getByRole("button", { name: "Sign In" }).click();
  21.  
  22.         // Act
  23.         // Click filter button
  24.         const filterButtonId = iconNames.filter + elementSuffixes.filterActionButton;
  25.         await uiTester.click(filterButtonId);
  26.  
  27.         // Open company multi-browser
  28.         const multiBrowserId =
  29.             elements.multiBrowser.FdMultiBrowser + "companyId" + elements.browser.browserIcon;
  30.         await uiTester.click(multiBrowserId);
  31.  
  32.         // Select multiple checkboxes
  33.         const rightTablePrefix = elementPrefixes.right + elements.table.tableElementId + 0;
  34.         const checkbox0Id = rightTablePrefix + tableElementSuffixes.checkbox + 0;
  35.         const checkbox1Id = rightTablePrefix + tableElementSuffixes.checkbox + 1;
  36.         const checkbox2Id = rightTablePrefix + tableElementSuffixes.checkbox + 2;
  37.  
  38.         await uiTester.click(checkbox0Id);
  39.         await uiTester.click(checkbox1Id);
  40.         await uiTester.click(checkbox2Id);
  41.  
  42.         // Get company names before moving
  43.         const company0RowId = rightTablePrefix + tableElementSuffixes.row + 0;
  44.         const company1RowId = rightTablePrefix + tableElementSuffixes.row + 1;
  45.         const company2RowId = rightTablePrefix + tableElementSuffixes.row + 2;
  46.  
  47.         const company0Text = await page.locator(`#${company0RowId}`).textContent();
  48.         const company1Text = await page.locator(`#${company1RowId}`).textContent();
  49.         const company2Text = await page.locator(`#${company2RowId}`).textContent();
  50.  
  51.         // Move selected companies to left table
  52.         await page.locator(`#${elements.multiBrowser.moveResourcesToLeftTable}0`).first().click();
  53.         await uiTester.click(elements.browser.okBrowserButton + 0);
  54.  
  55.         // Assert checkboxes are selected
  56.         await assertElementHaveCheckmark(checkbox0Id);
  57.         await assertElementHaveCheckmark(checkbox1Id);
  58.         await assertElementHaveCheckmark(checkbox2Id);
  59.  
  60.         // Assert companies are moved to left side
  61.         const leftTableId = elements.multiBrowser.leftTable + 0;
  62.  
  63.         // Check if left table exists
  64.         const leftTableExists = await uiTester.isElementExists(leftTableId);
  65.         test.expect(leftTableExists).toBeTruthy();
  66.  
  67.         // Verify rows exist in the left table
  68.         const leftTableRowPrefix = leftTableId + tableElementSuffixes.row;
  69.         const leftRow0Id = leftTableRowPrefix + 0;
  70.         const leftRow1Id = leftTableRowPrefix + 1;
  71.         const leftRow2Id = leftTableRowPrefix + 2;
  72.  
  73.         const leftRow0Exists = await uiTester.isElementExists(leftRow0Id);
  74.         const leftRow1Exists = await uiTester.isElementExists(leftRow1Id);
  75.         const leftRow2Exists = await uiTester.isElementExists(leftRow2Id);
  76.  
  77.         test.expect(leftRow0Exists).toBeTruthy();
  78.         test.expect(leftRow1Exists).toBeTruthy();
  79.         test.expect(leftRow2Exists).toBeTruthy();
  80.  
  81.         // Verify content exists in the left table rows
  82.         const leftRow0Text = await page.locator(`#${leftRow0Id}`).textContent();
  83.         const leftRow1Text = await page.locator(`#${leftRow1Id}`).textContent();
  84.         const leftRow2Text = await page.locator(`#${leftRow2Id}`).textContent();
  85.  
  86.         test.expect(leftRow0Text).toBeTruthy();
  87.         test.expect(leftRow1Text).toBeTruthy();
  88.         test.expect(leftRow2Text).toBeTruthy();
  89.  
  90.         // Verify that the moved companies match the selected ones
  91.         // Note: Order might be different on the left side, so check if all companies are present
  92.         const leftCompanyTexts = [leftRow0Text, leftRow1Text, leftRow2Text];
  93.  
  94.         // Check if each selected company text is contained in one of the left table rows
  95.         test.expect(
  96.             leftCompanyTexts.some((text) => text && company0Text && text.includes(company0Text)),
  97.         ).toBeTruthy();
  98.  
  99.         test.expect(
  100.             leftCompanyTexts.some((text) => text && company1Text && text.includes(company1Text)),
  101.         ).toBeTruthy();
  102.  
  103.         test.expect(
  104.             leftCompanyTexts.some((text) => text && company2Text && text.includes(company2Text)),
  105.         ).toBeTruthy();
  106.     },
  107. );
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement