diff --git a/src/fixtures/fixtures.ts b/src/fixtures/fixtures.ts index 9956175..8adb1d6 100644 --- a/src/fixtures/fixtures.ts +++ b/src/fixtures/fixtures.ts @@ -30,6 +30,7 @@ import ProductEditPage from '@/pages/product/productEdit/ProductEditPage'; import ProductShowPage from '@/pages/product/productShow/ProductShowPage'; import CreatePutawayPage from '@/pages/putaway/CreatePutawayPage'; import PutawayListPage from '@/pages/putaway/list/PutawayListPage'; +import AddCommentToPutawayPage from '@/pages/putaway/putawayDetails/AddCommentToPutawayPage'; import PutawayDetailsPage from '@/pages/putaway/putawayDetails/PutawayDetailsPage'; import ReceivingPage from '@/pages/receiving/ReceivingPage'; import OldViewShipmentPage from '@/pages/stockMovementShow/OldViewShipmentPage'; @@ -74,6 +75,7 @@ type Fixtures = { putawayListPage: PutawayListPage; productEditPage: ProductEditPage; editTransactionPage: EditTransactionPage; + addCommentToPutawayPage: AddCommentToPutawayPage; // COMPONENTS navbar: Navbar; locationChooser: LocationChooser; @@ -153,6 +155,8 @@ export const test = baseTest.extend({ productEditPage: async ({ page }, use) => use(new ProductEditPage(page)), editTransactionPage: async ({ page }, use) => use(new EditTransactionPage(page)), + addCommentToPutawayPage: async ({ page }, use) => + use(new AddCommentToPutawayPage(page)), // COMPONENTS navbar: async ({ page }, use) => use(new Navbar(page)), locationChooser: async ({ page }, use) => use(new LocationChooser(page)), diff --git a/src/pages/product/productShow/ProductShowPage.ts b/src/pages/product/productShow/ProductShowPage.ts index ad0f2d8..ca6927a 100644 --- a/src/pages/product/productShow/ProductShowPage.ts +++ b/src/pages/product/productShow/ProductShowPage.ts @@ -36,7 +36,7 @@ class ProductShowPage extends BasePageModel { return this.page.getByRole('link', { name: 'Stock History' }); } - get editProductkButton() { + get editProductButton() { return this.page.getByRole('link', { name: 'Edit Product' }); } } diff --git a/src/pages/putaway/list/PutawayListTable.ts b/src/pages/putaway/list/PutawayListTable.ts index 095f666..b5f6075 100644 --- a/src/pages/putaway/list/PutawayListTable.ts +++ b/src/pages/putaway/list/PutawayListTable.ts @@ -15,6 +15,15 @@ class PutawayListTable extends BasePageModel { return new Row(this.page, this.rows.nth(index)); } + rowByOrderNumber(orderNumber: string) { + return new Row( + this.page, + this.rows.filter({ + has: this.page.getByTestId('order-number').getByText(orderNumber), + }) + ); + } + async clickDeleteOrderButton(index: number) { this.page.once('dialog', (dialog) => dialog.accept()); await this.row(index).deleteOrder.click(); diff --git a/src/pages/putaway/putawayDetails/AddCommentToPutawayPage.ts b/src/pages/putaway/putawayDetails/AddCommentToPutawayPage.ts new file mode 100644 index 0000000..c2eee55 --- /dev/null +++ b/src/pages/putaway/putawayDetails/AddCommentToPutawayPage.ts @@ -0,0 +1,42 @@ +import { expect } from '@playwright/test'; + +import BasePageModel from '@/pages/BasePageModel'; + +class AddCommentToPutawayPage extends BasePageModel { + async isLoaded() { + await expect( + this.page.getByRole('heading', { name: 'Add Comment' }) + ).toBeVisible(); + } + + get commentField() { + return this.page.locator('#comment'); + } + + get saveButton() { + return this.page.getByRole('button', { name: 'Save' }); + } + + get recipientDropdown() { + return this.page.locator('#recipient_id_chosen .chosen-single'); + } + + get recipientOptions() { + return this.page.locator('#recipient_id_chosen .chosen-results li'); + } + + async selectRecipient(name: string) { + await this.recipientDropdown.click(); + + await this.recipientOptions.filter({ hasText: name }).click(); + } + + get senderName() { + return this.page + .locator('tr.prop') + .filter({ hasText: 'From' }) + .locator('td.value'); + } +} + +export default AddCommentToPutawayPage; diff --git a/src/pages/putaway/putawayDetails/PutawayDetailsPage.ts b/src/pages/putaway/putawayDetails/PutawayDetailsPage.ts index ef281a5..0fd56a8 100644 --- a/src/pages/putaway/putawayDetails/PutawayDetailsPage.ts +++ b/src/pages/putaway/putawayDetails/PutawayDetailsPage.ts @@ -4,6 +4,7 @@ import FileHandler from '@/components/FileHandler'; import BasePageModel from '@/pages/BasePageModel'; import AuditingTable from './components/AuditingTable'; +import CommentsTable from './components/CommentsTable'; import ItemDetailsTable from './components/ItemDetailsTable'; import ItemStatusTable from './components/ItemStatusTable'; import OrderHeaderTable from './components/OrderHeaderTable'; @@ -16,6 +17,7 @@ class PutawayDetailsPage extends BasePageModel { itemDetailsTable: ItemDetailsTable; auditingTable: AuditingTable; fileHandler: FileHandler; + commentsTable: CommentsTable; constructor(page: Page) { super(page); @@ -25,6 +27,7 @@ class PutawayDetailsPage extends BasePageModel { this.itemDetailsTable = new ItemDetailsTable(page); this.auditingTable = new AuditingTable(page); this.fileHandler = new FileHandler(page); + this.commentsTable = new CommentsTable(page); } async isLoaded() { @@ -127,6 +130,20 @@ class PutawayDetailsPage extends BasePageModel { this.page.once('dialog', (dialog) => dialog.accept()); await this.actionsDeleteButton.click(); } + + get badgeCount() { + return this.page.locator('li.tab-badge'); + } + + get spinner() { + return this.page.locator('.loading'); + } + + async waitUntilSpinnerHides() { + await this.spinner.waitFor({ + state: 'hidden', + }); + } } export default PutawayDetailsPage; diff --git a/src/pages/putaway/putawayDetails/components/CommentsTable.ts b/src/pages/putaway/putawayDetails/components/CommentsTable.ts new file mode 100644 index 0000000..7a7dcac --- /dev/null +++ b/src/pages/putaway/putawayDetails/components/CommentsTable.ts @@ -0,0 +1,72 @@ +import { expect, Locator, Page } from '@playwright/test'; + +import BasePageModel from '@/pages/BasePageModel'; + +class CommentsTable extends BasePageModel { + constructor(page: Page) { + super(page); + } + + async isLoaded() { + await expect( + this.page.getByRole('heading').getByText('Comments') + ).toBeVisible(); + } + + get table() { + return this.page.getByRole('table').filter({ + hasText: 'Comment', + }); + } + + get rows() { + return this.table.getByRole('row'); + } + + row(index: number) { + return new Row(this.page, this.rows.nth(index)); + } + + getColumnHeader(columnName: string) { + return this.table.getByRole('row').getByText(columnName, { exact: true }); + } + + async clickDeleteCommentButton(index: number) { + this.page.once('dialog', (dialog) => dialog.accept()); + await this.row(index).deleteButton.click(); + } + + get emptyCommentTable() { + return this.page.locator('.fade.center.empty').getByText('No comments'); + } +} + +class Row extends BasePageModel { + row: Locator; + constructor(page: Page, row: Locator) { + super(page); + this.row = row; + } + + get commentContent() { + return this.row.getByRole('cell').nth(2); + } + + get recipientContent() { + return this.row.getByRole('cell').nth(0); + } + + get senderContent() { + return this.row.getByRole('cell').nth(1); + } + + get editButton() { + return this.row.getByRole('link', { name: 'Edit', exact: true }); + } + + get deleteButton() { + return this.row.getByRole('link', { name: 'Delete', exact: true }); + } +} + +export default CommentsTable; diff --git a/src/pages/putaway/steps/StartStep.ts b/src/pages/putaway/steps/StartStep.ts index b2993da..ff1f3f9 100644 --- a/src/pages/putaway/steps/StartStep.ts +++ b/src/pages/putaway/steps/StartStep.ts @@ -55,6 +55,12 @@ class StartStep extends BasePageModel { async closeDisplayedError() { return this.page.locator('.alert-close-icon').first().click(); } + + get orderNumberValue() { + return this.page.locator( + '[data-testid=\'wizardTitle\'] > div > span:nth-of-type(2)' + ); + } } export default StartStep; diff --git a/src/tests/putaway/addCommentToPutaway.test.ts b/src/tests/putaway/addCommentToPutaway.test.ts new file mode 100644 index 0000000..b056267 --- /dev/null +++ b/src/tests/putaway/addCommentToPutaway.test.ts @@ -0,0 +1,334 @@ +import AppConfig from '@/config/AppConfig'; +import { ShipmentType } from '@/constants/ShipmentType'; +import { expect, test } from '@/fixtures/fixtures'; +import { Product } from '@/generated/ProductCodes.generated'; +import { StockMovementResponse } from '@/types'; +import RefreshCachesUtils from '@/utils/RefreshCaches'; +import { + deleteReceivedShipment, + getShipmentId, + getShipmentItemId, +} from '@/utils/shipmentUtils'; + +test.describe('Add comment to Putaway', () => { + let STOCK_MOVEMENT: StockMovementResponse; + + test.beforeEach( + async ({ + supplierLocationService, + stockMovementService, + productService, + receivingService, + }) => { + const supplierLocation = await supplierLocationService.getLocation(); + STOCK_MOVEMENT = await stockMovementService.createInbound({ + originId: supplierLocation.id, + }); + + const product = await productService.getProduct(Product.FIVE); + + await stockMovementService.addItemsToInboundStockMovement( + STOCK_MOVEMENT.id, + [{ productId: product.id, quantity: 10 }] + ); + + await stockMovementService.sendInboundStockMovement(STOCK_MOVEMENT.id, { + shipmentType: ShipmentType.AIR, + }); + + const { data: stockMovement } = + await stockMovementService.getStockMovement(STOCK_MOVEMENT.id); + const shipmentId = getShipmentId(stockMovement); + const { data: receipt } = await receivingService.getReceipt(shipmentId); + const receivingBin = + AppConfig.instance.receivingBinPrefix + STOCK_MOVEMENT.identifier; + + await receivingService.createReceivingBin(shipmentId, receipt); + + await receivingService.updateReceivingItems(shipmentId, [ + { + shipmentItemId: getShipmentItemId(receipt, 0, 0), + quantityReceiving: 10, + binLocationName: receivingBin, + }, + ]); + await receivingService.completeReceipt(shipmentId); + } + ); + + test.afterEach( + async ({ + stockMovementShowPage, + stockMovementService, + navbar, + transactionListPage, + oldViewShipmentPage, + }) => { + await navbar.configurationButton.click(); + await navbar.transactions.click(); + await transactionListPage.table.row(1).actionsButton.click(); + await transactionListPage.table.deleteButton.click(); + await expect(transactionListPage.successMessage).toBeVisible(); + await transactionListPage.table.row(1).actionsButton.click(); + await transactionListPage.table.deleteButton.click(); + await expect(transactionListPage.successMessage).toBeVisible(); + + await deleteReceivedShipment({ + stockMovementShowPage, + oldViewShipmentPage, + stockMovementService, + STOCK_MOVEMENT, + }); + } + ); + + test('Add comment to putaway', async ({ + stockMovementShowPage, + navbar, + createPutawayPage, + internalLocationService, + putawayDetailsPage, + putawayListPage, + mainUserService, + addCommentToPutawayPage, + managerUserService, + }) => { + const internalLocation = await internalLocationService.getLocation(); + + const mainUser = await mainUserService.getUser(); + const managerUser = await managerUserService.getUser(); + + await test.step('Go to stock movement show page and assert received status', async () => { + await stockMovementShowPage.goToPage(STOCK_MOVEMENT.id); + await stockMovementShowPage.isLoaded(); + await expect(stockMovementShowPage.statusTag).toHaveText('Received'); + await RefreshCachesUtils.refreshCaches({ + navbar, + }); + }); + + await test.step('Go to create putaway page', async () => { + await navbar.inbound.click(); + await navbar.createPutaway.click(); + await createPutawayPage.isLoaded(); + }); + + await test.step('Start putaway', async () => { + await createPutawayPage.table.row(0).checkbox.click(); + await createPutawayPage.startPutawayButton.click(); + await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Select bin to putaway', async () => { + await createPutawayPage.startStep.table.row(0).putawayBinSelect.click(); + await createPutawayPage.startStep.table + .row(0) + .getPutawayBin(internalLocation.name) + .click(); + await createPutawayPage.startStep.saveButton.click(); + }); + + await test.step('Go to putaway list page', async () => { + await putawayListPage.goToPage(); + await putawayListPage.isLoaded(); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Pending'); + }); + + await test.step('Go to putaway view page', async () => { + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); + await row.actionsButton.click(); + await row.viewOrderDetails.click(); + await putawayDetailsPage.isLoaded(); + }); + + await test.step('Add comment to pending putaway', async () => { + await expect(putawayDetailsPage.addCommentButton).toBeVisible(); + await putawayDetailsPage.addCommentButton.click(); + await addCommentToPutawayPage.isLoaded(); + await addCommentToPutawayPage.commentField.fill('add comment'); + await addCommentToPutawayPage.saveButton.click(); + }); + + await test.step('Assert comment is indicated on putaway details page', async () => { + await putawayDetailsPage.isLoaded(); + await putawayDetailsPage.commentsTab.click(); + await putawayDetailsPage.waitUntilSpinnerHides(); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect(putawayDetailsPage.badgeCount).toBeVisible(); + await expect(putawayDetailsPage.badgeCount).toHaveAttribute( + 'data-count', + '1' + ); + }); + + await test.step('Assert content of comments tab', async () => { + await expect( + putawayDetailsPage.commentsTable.getColumnHeader('to') + ).toBeVisible(); + await expect( + putawayDetailsPage.commentsTable.getColumnHeader('from') + ).toBeVisible(); + await expect( + putawayDetailsPage.commentsTable.getColumnHeader('Comment') + ).toBeVisible(); + await expect( + putawayDetailsPage.commentsTable.getColumnHeader('Date') + ).toBeVisible(); + await expect( + putawayDetailsPage.commentsTable.getColumnHeader('Actions') + ).toBeVisible(); + }); + + await test.step('Assert content of added comment', async () => { + await expect( + putawayDetailsPage.commentsTable.row(2).commentContent + ).toHaveText('add comment'); + }); + + await test.step('Edit added comment', async () => { + await putawayDetailsPage.commentsTable.row(2).editButton.click(); + await addCommentToPutawayPage.isLoaded(); + await expect(addCommentToPutawayPage.commentField).toHaveText( + 'add comment' + ); + await addCommentToPutawayPage.commentField.fill('edit added comment'); + await addCommentToPutawayPage.saveButton.click(); + }); + + await test.step('Assert comment is indicated on putaway details page', async () => { + await putawayDetailsPage.isLoaded(); + await putawayDetailsPage.commentsTab.click(); + await putawayDetailsPage.waitUntilSpinnerHides(); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect(putawayDetailsPage.badgeCount).toBeVisible(); + await expect(putawayDetailsPage.badgeCount).toHaveAttribute( + 'data-count', + '1' + ); + }); + + await test.step('Assert content of added comment', async () => { + await expect(putawayDetailsPage.commentsTable.rows).toHaveCount(3); + await expect( + putawayDetailsPage.commentsTable.row(2).commentContent + ).toHaveText('edit added comment'); + }); + + await test.step('Add another comment to pending putaway', async () => { + await expect(putawayDetailsPage.addCommentButton).toBeVisible(); + await putawayDetailsPage.addCommentButton.click(); + await addCommentToPutawayPage.isLoaded(); + await addCommentToPutawayPage.commentField.fill('add another comment'); + await addCommentToPutawayPage.saveButton.click(); + }); + + await test.step('Assert comment is indicated on putaway details page', async () => { + await putawayDetailsPage.isLoaded(); + await putawayDetailsPage.commentsTab.click(); + await putawayDetailsPage.waitUntilSpinnerHides(); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect(putawayDetailsPage.badgeCount).toBeVisible(); + await expect(putawayDetailsPage.badgeCount).toHaveAttribute( + 'data-count', + '2' + ); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect(putawayDetailsPage.commentsTable.rows).toHaveCount(4); + }); + + await test.step('Delete added comment', async () => { + await putawayDetailsPage.commentsTable.clickDeleteCommentButton(2); + await putawayDetailsPage.isLoaded(); + }); + + await test.step('Assert delete comment is indicated on putaway details page', async () => { + await putawayDetailsPage.isLoaded(); + await putawayDetailsPage.commentsTab.click(); + await putawayDetailsPage.waitUntilSpinnerHides(); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect(putawayDetailsPage.badgeCount).toBeVisible(); + await expect(putawayDetailsPage.badgeCount).toHaveAttribute( + 'data-count', + '1' + ); + await expect(putawayDetailsPage.commentsTable.rows).toHaveCount(3); + }); + + await test.step('Assert delete added comments', async () => { + await putawayDetailsPage.commentsTable.clickDeleteCommentButton(2); + await putawayDetailsPage.isLoaded(); + await putawayDetailsPage.commentsTab.click(); + await putawayDetailsPage.waitUntilSpinnerHides(); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect( + putawayDetailsPage.commentsTable.emptyCommentTable + ).toBeVisible(); + await expect(putawayDetailsPage.badgeCount).toBeHidden(); + }); + + await test.step('Return to putaway and complete it', async () => { + await putawayDetailsPage.editButton.click(); + await createPutawayPage.startStep.nextButton.click(); + await createPutawayPage.completeStep.isLoaded(); + await createPutawayPage.completeStep.completePutawayButton.click(); + }); + + await test.step('Assert completing putaway', async () => { + await putawayDetailsPage.isLoaded(); + await expect(putawayDetailsPage.statusTag).toHaveText('Completed'); + await expect( + putawayDetailsPage.orderHeaderTable.statusRowValue + ).toContainText('Completed'); + await putawayDetailsPage.isLoaded(); + }); + + await test.step('Add comment to compleded putaway', async () => { + await putawayDetailsPage.isLoaded(); + await expect(putawayDetailsPage.addCommentButton).toBeVisible(); + await putawayDetailsPage.addCommentButton.click(); + await addCommentToPutawayPage.isLoaded(); + await addCommentToPutawayPage.selectRecipient(managerUser.name); + await expect(addCommentToPutawayPage.senderName).toContainText( + mainUser.name + ); + await addCommentToPutawayPage.commentField.fill( + 'add comment to completed putaway' + ); + await addCommentToPutawayPage.saveButton.click(); + }); + + await test.step('Assert comment is indicated on putaway details page', async () => { + await putawayDetailsPage.isLoaded(); + await putawayDetailsPage.commentsTab.click(); + await putawayDetailsPage.waitUntilSpinnerHides(); + await putawayDetailsPage.commentsTable.isLoaded(); + await expect(putawayDetailsPage.badgeCount).toBeVisible(); + await expect(putawayDetailsPage.badgeCount).toHaveAttribute( + 'data-count', + '1' + ); + }); + + await test.step('Assert content of added comment', async () => { + await expect(putawayDetailsPage.commentsTable.rows).toHaveCount(3); + await expect( + putawayDetailsPage.commentsTable.row(2).recipientContent + ).toContainText(managerUser.name); + await expect( + putawayDetailsPage.commentsTable.row(2).senderContent + ).toContainText(mainUser.name); + await expect( + putawayDetailsPage.commentsTable.row(2).commentContent + ).toHaveText('add comment to completed putaway'); + }); + }); +}); diff --git a/src/tests/putaway/assertPutawayDetailsPage.test.ts b/src/tests/putaway/assertPutawayDetailsPage.test.ts index 4188f4e..a706503 100644 --- a/src/tests/putaway/assertPutawayDetailsPage.test.ts +++ b/src/tests/putaway/assertPutawayDetailsPage.test.ts @@ -132,6 +132,9 @@ test.describe('Assert putaway details page', () => { await createPutawayPage.startStep.isLoaded(); }); + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + await test.step('Select bin to putaway', async () => { await createPutawayPage.startStep.table.row(0).putawayBinSelect.click(); await createPutawayPage.startStep.table @@ -150,16 +153,20 @@ test.describe('Assert putaway details page', () => { await expect(putawayListPage.orderTypeFilter).toBeDisabled(); await expect(putawayListPage.statusFilter).toContainText('Pending'); await expect(putawayListPage.statusFilter).toBeEnabled(); - await expect(putawayListPage.table.row(1).statusTag).toHaveText( - 'Pending' - ); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Pending'); await expect(putawayListPage.destinationFilter).toContainText( currentLocation.name ); }); await test.step('Go to putaway view page and assert page elements', async () => { - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); @@ -266,9 +273,6 @@ test.describe('Assert putaway details page', () => { await putawayDetailsPage.summaryActionsButton.click(); }); - const putawayOrderIdentifier = - await putawayDetailsPage.orderHeaderTable.orderNumberValue.textContent(); - const detailsPagePdfFileName = 'Putaway ' + `${putawayOrderIdentifier}`.toString().trim() + '.pdf'; @@ -370,15 +374,19 @@ test.describe('Assert putaway details page', () => { `${putawayOrderIdentifier}`.toString().trim() ); await putawayListPage.searchButton.click(); - await expect(putawayListPage.table.row(1).statusTag).toHaveText( - 'Completed' - ); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Completed'); }); await test.step('Download putaway pdf from putaway list', async () => { const generatePutawayPdfFileName = 'Putaway ' + `${putawayOrderIdentifier}`.toString().trim() + '.pdf'; - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.generatePdf.click(); await putawayDetailsPage.fileHandler.onDownload(); diff --git a/src/tests/putaway/assertZonesInPutaways.test.ts b/src/tests/putaway/assertZonesInPutaways.test.ts index e16464b..1e9a49b 100644 --- a/src/tests/putaway/assertZonesInPutaways.test.ts +++ b/src/tests/putaway/assertZonesInPutaways.test.ts @@ -125,7 +125,7 @@ test.describe('Assert zones on putaway pages', () => { await test.step('Assign bin with zone as preferred bin', async () => { await productShowPage.goToPage(productB.id); - await productShowPage.editProductkButton.click(); + await productShowPage.editProductButton.click(); await productEditPage.inventoryLevelsTab.click(); await productEditPage.inventoryLevelsTabSection.createStockLevelButton.click(); await productEditPage.inventoryLevelsTabSection.createStockLevelModal.receivingTab.click(); @@ -170,7 +170,7 @@ test.describe('Assert zones on putaway pages', () => { await test.step('Delete inventory level', async () => { await productShowPage.goToPage(product.id); - await productShowPage.editProductkButton.click(); + await productShowPage.editProductButton.click(); await productEditPage.inventoryLevelsTab.click(); await productEditPage.inventoryLevelsTabSection .row(1) diff --git a/src/tests/putaway/changeLocationOnCreatePutawayPage.test.ts b/src/tests/putaway/changeLocationOnCreatePutawayPage.test.ts index 76d127b..d201229 100644 --- a/src/tests/putaway/changeLocationOnCreatePutawayPage.test.ts +++ b/src/tests/putaway/changeLocationOnCreatePutawayPage.test.ts @@ -12,6 +12,7 @@ import { test.describe('Change location on putaway create page and list pages', () => { let STOCK_MOVEMENT: StockMovementResponse; + let putawayOrderIdentifier: string | undefined; test.beforeEach( async ({ @@ -20,6 +21,7 @@ test.describe('Change location on putaway create page and list pages', () => { productService, receivingService, }) => { + putawayOrderIdentifier = undefined; const supplierLocation = await supplierLocationService.getLocation(); STOCK_MOVEMENT = await stockMovementService.createInbound({ originId: supplierLocation.id, @@ -63,8 +65,11 @@ test.describe('Change location on putaway create page and list pages', () => { putawayListPage, oldViewShipmentPage, }) => { + if (!putawayOrderIdentifier) return; await putawayListPage.goToPage(); - await putawayListPage.table.row(1).actionsButton.click(); + await putawayListPage.table + .rowByOrderNumber(`${putawayOrderIdentifier}`.toString().trim()) + .actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); await putawayListPage.emptyPutawayList.isVisible(); @@ -150,21 +155,26 @@ test.describe('Change location on putaway create page and list pages', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + putawayOrderIdentifier = + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (await createPutawayPage.startStep.orderNumberValue.textContent())!; + + await test.step('Save pending putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); await test.step('Go to list page and assert putaway is created', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - await expect(putawayListPage.table.row(1).statusTag).toHaveText( - 'Pending' - ); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Pending'); }); - const putawayOrderIdentifier = await putawayListPage.table - .row(1) - .orderNumber.textContent(); - await test.step('Change location to another depot', async () => { await navbar.locationChooserButton.click(); await locationChooser diff --git a/src/tests/putaway/deleteItemsFromPutaway.test.ts b/src/tests/putaway/deleteItemsFromPutaway.test.ts index 012bb39..b960a79 100644 --- a/src/tests/putaway/deleteItemsFromPutaway.test.ts +++ b/src/tests/putaway/deleteItemsFromPutaway.test.ts @@ -130,14 +130,26 @@ test.describe('Delete items from putaway', () => { await createPutawayPage.table.row(2).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); await test.step('Go to putaway list page and assert number of lines', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - await expect(putawayListPage.table.row(1).lineItems).toContainText('2'); - const row = putawayListPage.table.row(1); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).lineItems + ).toContainText('2'); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); @@ -186,8 +198,14 @@ test.describe('Delete items from putaway', () => { await test.step('Go to putaway list page and assert number of lines', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - await expect(putawayListPage.table.row(1).lineItems).toContainText('1'); - const row = putawayListPage.table.row(1); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).lineItems + ).toContainText('1'); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); @@ -267,8 +285,14 @@ test.describe('Delete items from putaway', () => { await test.step('Go to putaway list page and assert number of lines', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - await expect(putawayListPage.table.row(1).lineItems).toContainText('2'); - const row = putawayListPage.table.row(1); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).lineItems + ).toContainText('2'); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); @@ -351,9 +375,6 @@ test.describe('Delete items from putaway', () => { ).toHaveCount(2); }); - const putawayOrderIdentifier = - await putawayDetailsPage.orderHeaderTable.orderNumberValue.textContent(); - await test.step('Assert completed putaway on list putaway and assert number of lines', async () => { await putawayListPage.goToPage(); await putawayListPage.clearFilteringButton.click(); @@ -361,10 +382,16 @@ test.describe('Delete items from putaway', () => { `${putawayOrderIdentifier}`.toString().trim() ); await putawayListPage.searchButton.click(); - await expect(putawayListPage.table.row(1).statusTag).toHaveText( - 'Completed' - ); - await expect(putawayListPage.table.row(1).lineItems).toContainText('2'); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Completed'); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).lineItems + ).toContainText('2'); }); }); }); diff --git a/src/tests/putaway/deletePendingPutaway.test.ts b/src/tests/putaway/deletePendingPutaway.test.ts index 5f89ee3..29fcf32 100644 --- a/src/tests/putaway/deletePendingPutaway.test.ts +++ b/src/tests/putaway/deletePendingPutaway.test.ts @@ -110,6 +110,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -119,7 +125,9 @@ test.describe('Delete pending putaways', () => { await expect( putawayListPage.table.rows.filter({ has: page.locator('td') }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); await putawayListPage.emptyPutawayList.isVisible(); @@ -161,6 +169,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -170,7 +184,9 @@ test.describe('Delete pending putaways', () => { await expect( putawayListPage.table.rows.filter({ has: page.locator('td') }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); }); @@ -220,6 +236,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -231,7 +253,9 @@ test.describe('Delete pending putaways', () => { has: managerUserPage.locator('td'), }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); await putawayListPage.emptyPutawayList.isVisible(); @@ -276,6 +300,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -287,7 +317,9 @@ test.describe('Delete pending putaways', () => { has: managerUserPage.locator('td'), }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); }); @@ -338,6 +370,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -349,7 +387,9 @@ test.describe('Delete pending putaways', () => { has: adminUserPage.locator('td'), }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); await putawayListPage.emptyPutawayList.isVisible(); @@ -394,6 +434,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -405,7 +451,9 @@ test.describe('Delete pending putaways', () => { has: adminUserPage.locator('td'), }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); }); @@ -456,6 +504,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -467,7 +521,9 @@ test.describe('Delete pending putaways', () => { has: assistantUserPage.locator('td'), }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); await putawayListPage.emptyPutawayList.isVisible(); @@ -512,6 +568,12 @@ test.describe('Delete pending putaways', () => { await createPutawayPage.table.row(1).checkbox.click(); await createPutawayPage.startPutawayButton.click(); await createPutawayPage.startStep.isLoaded(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -523,7 +585,9 @@ test.describe('Delete pending putaways', () => { has: assistantUserPage.locator('td'), }) ).toHaveCount(1); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); }); diff --git a/src/tests/putaway/performPutawayAsManagerUser.test.ts b/src/tests/putaway/performPutawayAsManagerUser.test.ts index 725670a..e0dc37d 100644 --- a/src/tests/putaway/performPutawayAsManagerUser.test.ts +++ b/src/tests/putaway/performPutawayAsManagerUser.test.ts @@ -101,7 +101,7 @@ test.describe('Perform putaway as manager user', () => { internalLocationService, }) => { const receivingBin = - AppConfig.instance.receivingBinPrefix + STOCK_MOVEMENT.identifier;; + AppConfig.instance.receivingBinPrefix + STOCK_MOVEMENT.identifier; const internalLocation = await internalLocationService.getLocation(); const managerUserPage = await managerUserContext.newPage(); @@ -274,6 +274,12 @@ test.describe('Perform putaway as manager user', () => { .row(2) .getPutawayBin(internalLocation.name) .click(); + }); + + const putawayOrderIdentifier = + await createPutawayPageManagerUser.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPageManagerUser.startStep.saveButton.click(); await managerUserPage.close(); }); @@ -281,12 +287,11 @@ test.describe('Perform putaway as manager user', () => { await test.step('Go to list putaway page as main user and use filters', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - await expect(putawayListPage.table.row(1).statusTag).toHaveText( - 'Pending' - ); - const putawayOrderIdentifier = await putawayListPage.table - .row(1) - .orderNumber.textContent(); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Pending'); await putawayListPage.searchField.fill( `${putawayOrderIdentifier}`.toString().trim() ); @@ -294,15 +299,14 @@ test.describe('Perform putaway as manager user', () => { await putawayListPage.orderedByTextInput.fill(managerUser.name); await putawayListPage.getOrderedBy(managerUser.name); await putawayListPage.searchButton.click(); - await expect(putawayListPage.table.row(1).orderedBy).toContainText( - managerUser.name - ); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).orderedBy + ).toContainText(managerUser.name); }); await test.step('Clear applied filters and filter by created by ans status', async () => { - const putawayOrderIdentifier = await putawayListPage.table - .row(1) - .orderNumber.textContent(); await putawayListPage.isLoaded(); await putawayListPage.clearFilteringButton.click(); await putawayListPage.statusFilter.click(); @@ -312,17 +316,25 @@ test.describe('Perform putaway as manager user', () => { await putawayListPage.createdByTextInput.fill(managerUser.name); await putawayListPage.getCreatedBy(managerUser.name); await putawayListPage.searchButton.click(); - await expect(putawayListPage.table.row(1).orderNumber).toContainText( - `${putawayOrderIdentifier}` - ); - await expect(putawayListPage.table.row(1).statusTag).toHaveText( - 'Pending' - ); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).orderNumber + ).toContainText(`${putawayOrderIdentifier}`); + await expect( + putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ).statusTag + ).toHaveText('Pending'); }); await test.step('Go to putaway details page', async () => { - await putawayListPage.table.row(1).actionsButton.click(); - await putawayListPage.table.row(1).viewOrderDetails.click(); + await putawayListPage.table + .rowByOrderNumber(`${putawayOrderIdentifier}`.toString().trim()) + .actionsButton.click(); + await putawayListPage.table + .rowByOrderNumber(`${putawayOrderIdentifier}`.toString().trim()) + .viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); }); diff --git a/src/tests/putaway/putawayMoreThan1Item.test.ts b/src/tests/putaway/putawayMoreThan1Item.test.ts index 512892d..1e44df2 100644 --- a/src/tests/putaway/putawayMoreThan1Item.test.ts +++ b/src/tests/putaway/putawayMoreThan1Item.test.ts @@ -145,6 +145,12 @@ test.describe('Create putaway for more than 1 item, separate putaways', () => { .row(1) .getPutawayBin(internalLocation.name) .click(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -168,7 +174,9 @@ test.describe('Create putaway for more than 1 item, separate putaways', () => { await test.step('Go to putaway list page and edit created pending putaway', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); diff --git a/src/tests/putaway/putawayToPreferredBin.test.ts b/src/tests/putaway/putawayToPreferredBin.test.ts index b979b0b..557c8bb 100644 --- a/src/tests/putaway/putawayToPreferredBin.test.ts +++ b/src/tests/putaway/putawayToPreferredBin.test.ts @@ -72,7 +72,7 @@ test.describe('Putaway to preferred bin and default bin', () => { await receivingService.completeReceipt(shipmentId); await productShowPage.goToPage(product2.id); - await productShowPage.editProductkButton.click(); + await productShowPage.editProductButton.click(); await productEditPage.inventoryLevelsTab.click(); await productEditPage.inventoryLevelsTabSection.createStockLevelButton.click(); await productEditPage.inventoryLevelsTabSection.createStockLevelModal.receivingTab.click(); @@ -108,7 +108,7 @@ test.describe('Putaway to preferred bin and default bin', () => { }); const product2 = await productService.getProduct(Product.FOUR); await productShowPage.goToPage(product2.id); - await productShowPage.editProductkButton.click(); + await productShowPage.editProductButton.click(); await productEditPage.inventoryLevelsTab.click(); await productEditPage.inventoryLevelsTabSection .row(1) diff --git a/src/tests/putaway/qtyValidationsInPutaways.test.ts b/src/tests/putaway/qtyValidationsInPutaways.test.ts index 916a4ad..c9853e7 100644 --- a/src/tests/putaway/qtyValidationsInPutaways.test.ts +++ b/src/tests/putaway/qtyValidationsInPutaways.test.ts @@ -12,6 +12,7 @@ import { test.describe('Assert qty validations in putaways', () => { let STOCK_MOVEMENT: StockMovementResponse; + let putawayOrderIdentifier: string | undefined; test.beforeEach( async ({ @@ -20,6 +21,7 @@ test.describe('Assert qty validations in putaways', () => { productService, receivingService, }) => { + putawayOrderIdentifier = undefined; const supplierLocation = await supplierLocationService.getLocation(); STOCK_MOVEMENT = await stockMovementService.createInbound({ originId: supplierLocation.id, @@ -63,8 +65,11 @@ test.describe('Assert qty validations in putaways', () => { stockMovementService, oldViewShipmentPage, }) => { + if (!putawayOrderIdentifier) return; await putawayListPage.goToPage(); - await putawayListPage.table.row(1).actionsButton.click(); + await putawayListPage.table + .rowByOrderNumber(`${putawayOrderIdentifier}`.toString().trim()) + .actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); await putawayListPage.emptyPutawayList.isVisible(); @@ -105,6 +110,10 @@ test.describe('Assert qty validations in putaways', () => { await createPutawayPage.startStep.isLoaded(); }); + putawayOrderIdentifier = + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (await createPutawayPage.startStep.orderNumberValue.textContent())!; + await test.step('Try to edit qty to higher and assert validations', async () => { await createPutawayPage.startStep.table.row(0).editButton.click(); await createPutawayPage.startStep.table.row(0).quantityInput.fill('20'); diff --git a/src/tests/putaway/rollbackLastReceiptWhenPutawayCreated.test.ts b/src/tests/putaway/rollbackLastReceiptWhenPutawayCreated.test.ts index d6b205d..61ae8e3 100644 --- a/src/tests/putaway/rollbackLastReceiptWhenPutawayCreated.test.ts +++ b/src/tests/putaway/rollbackLastReceiptWhenPutawayCreated.test.ts @@ -111,6 +111,9 @@ test.describe('Rollback last receipt behavior when putaway created', () => { await createPutawayPage.startStep.isLoaded(); }); + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + await test.step('Select bin to putaway', async () => { const internalLocation = await internalLocationService.getLocation(); await createPutawayPage.startStep.table.row(0).putawayBinSelect.click(); @@ -158,7 +161,9 @@ test.describe('Rollback last receipt behavior when putaway created', () => { }); await test.step('Open putaway details page', async () => { - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); diff --git a/src/tests/putaway/sortPutawayByCurrentPreferredAndOriginalOrder.test.ts b/src/tests/putaway/sortPutawayByCurrentPreferredAndOriginalOrder.test.ts index 09f4d13..4ef27df 100644 --- a/src/tests/putaway/sortPutawayByCurrentPreferredAndOriginalOrder.test.ts +++ b/src/tests/putaway/sortPutawayByCurrentPreferredAndOriginalOrder.test.ts @@ -31,6 +31,8 @@ test.describe('Sort putaway by current bin, preferred bin and original order', ( let binOne: LocationResponse; let binTwo: LocationResponse; + let putawayOrderIdentifier: string | undefined; + test.beforeEach( async ({ supplierLocationService, @@ -42,6 +44,7 @@ test.describe('Sort putaway by current bin, preferred bin and original order', ( productShowPage, productEditPage, }) => { + putawayOrderIdentifier = undefined; [productA, productB, productC] = [ await productService.getProduct(Product.ONE), await productService.getProduct(Product.TWO), @@ -96,7 +99,11 @@ test.describe('Sort putaway by current bin, preferred bin and original order', ( // Remove the pending 2nd putaway await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - await putawayListPage.table.row(1).actionsButton.click(); + if (!putawayOrderIdentifier) return; + await putawayListPage.goToPage(); + await putawayListPage.table + .rowByOrderNumber(`${putawayOrderIdentifier}`.toString().trim()) + .actionsButton.click(); await putawayListPage.table.clickDeleteOrderButton(1); // Delete the 3 created transactions @@ -122,7 +129,7 @@ test.describe('Sort putaway by current bin, preferred bin and original order', ( // Remove preferred bins for A and B. for (const product of [productA, productB]) { await productShowPage.goToPage(product.id); - await productShowPage.editProductkButton.click(); + await productShowPage.editProductButton.click(); await productEditPage.inventoryLevelsTab.click(); await productEditPage.inventoryLevelsTabSection .row(1) @@ -216,6 +223,10 @@ test.describe('Sort putaway by current bin, preferred bin and original order', ( await createPutawayPage.startStep.isLoaded(); }); + putawayOrderIdentifier = + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (await createPutawayPage.startStep.orderNumberValue.textContent())!; + await test.step('assert original order of items', async () => { await expect(createPutawayPage.startStep.sortButton).toContainText( 'Sort by current bins' diff --git a/src/tests/putaway/validationOnQtyRemovedFromReceivingBin.test.ts b/src/tests/putaway/validationOnQtyRemovedFromReceivingBin.test.ts index 47897ba..f67ddc9 100644 --- a/src/tests/putaway/validationOnQtyRemovedFromReceivingBin.test.ts +++ b/src/tests/putaway/validationOnQtyRemovedFromReceivingBin.test.ts @@ -214,6 +214,12 @@ test.describe('Assert validation on qty removed from receiving bin', () => { await expect(createPutawayPage.startStep.table.rows).toHaveCount(2); await expect(createPutawayPage.startStep.saveButton).toBeEnabled(); await expect(createPutawayPage.startStep.nextButton).toBeEnabled(); + }); + + const putawayOrderIdentifier = + await createPutawayPage.startStep.orderNumberValue.textContent(); + + await test.step('Save putaway', async () => { await createPutawayPage.startStep.saveButton.click(); }); @@ -233,7 +239,9 @@ test.describe('Assert validation on qty removed from receiving bin', () => { await test.step('Go to putaway list page and edit created pending putaway', async () => { await putawayListPage.goToPage(); await putawayListPage.isLoaded(); - const row = putawayListPage.table.row(1); + const row = putawayListPage.table.rowByOrderNumber( + `${putawayOrderIdentifier}`.toString().trim() + ); await row.actionsButton.click(); await row.viewOrderDetails.click(); await putawayDetailsPage.isLoaded(); diff --git a/src/utils/productUtils.ts b/src/utils/productUtils.ts index 5edcc8d..d612c24 100644 --- a/src/utils/productUtils.ts +++ b/src/utils/productUtils.ts @@ -14,7 +14,7 @@ export async function assignPreferredBin( bin: LocationResponse ) { await productShowPage.goToPage(product.id); - await productShowPage.editProductkButton.click(); + await productShowPage.editProductButton.click(); await productEditPage.inventoryLevelsTab.click(); await productEditPage.inventoryLevelsTabSection.createStockLevelButton.click(); await productEditPage.inventoryLevelsTabSection.createStockLevelModal.receivingTab.click();