Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/pages/inbound/create/steps/SendStep.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,14 @@ class SendStep extends BasePageModel {
await expect(this.driverNameField.textbox).toBeVisible();
await expect(this.commentField.textbox).toBeVisible();
}

getShipmentStatus(status: string) {
return this.page.locator('.shipment-status').getByText(status);
}

get rollbackButton() {
return this.page.getByRole('button', { name: 'Rollback' });
}
}

export default SendStep;
4 changes: 4 additions & 0 deletions src/pages/stockMovementShow/StockMovementShowPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@ class StockMovementShowPage extends BasePageModel {
await this.openTab(this.receiptTab, this.receiptListTable);
}

async openPackingListTab() {
await this.openTab(this.packingListTab, this.packingListTable);
}

async openDocumentsTab() {
await this.openTab(this.documentTab, this.documentsListTable);
}
Expand Down
186 changes: 186 additions & 0 deletions src/tests/inbound/createInbound/addLinesUsingButtons.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
import { expect, test } from '@/fixtures/fixtures';
import { Product } from '@/generated/ProductCodes.generated';
import { AddItemsTableRow, LocationResponse, User } from '@/types';
import { getDateByOffset, getToday } from '@/utils/DateUtils';

test.describe('Add lines using buttons and rollback from send page test', () => {
const TODAY = getToday();
let ROWS: AddItemsTableRow[];
let INBOUND_ID: string;
const DESCRIPTION = 'some description';
let ORIGIN: LocationResponse;
let USER: User;
const EXPECTED_DELIVERY_DATE = getDateByOffset(TODAY, 1);
const SHIPMENT_TYPE = 'Land';

test.beforeEach(
async ({ productService, mainUserService, supplierLocationService }) => {
const PRODUCT_ONE = await productService.getProduct(Product.ONE);
const PRODUCT_TWO = await productService.getProduct(Product.TWO);
const PRODUCT_THREE = await productService.getProduct(Product.THREE);
USER = await mainUserService.getUser();
ORIGIN = await supplierLocationService.getLocation();

ROWS = [
{
productCode: PRODUCT_ONE.productCode,
productName: PRODUCT_ONE.name,
quantity: '10',
lotNumber: 'E2E-lot-test',
recipient: USER.name,
expirationDate: getDateByOffset(new Date(), 3),
packLevel1: '',
packLevel2: '',
},
{
productCode: PRODUCT_TWO.productCode,
productName: PRODUCT_TWO.name,
quantity: '12',
lotNumber: '',
recipient: USER.name,
expirationDate: getDateByOffset(new Date(), 3),
packLevel1: '',
packLevel2: '',
},

{
productCode: PRODUCT_THREE.productCode,
productName: PRODUCT_THREE.name,
quantity: '15',
lotNumber: '',
recipient: USER.name,
expirationDate: getDateByOffset(new Date(), 3),
packLevel1: '',
packLevel2: '',
},
];
}
);

test.afterEach(async ({ stockMovementService, stockMovementShowPage }) => {
await stockMovementShowPage.isLoaded();
await stockMovementService.deleteStockMovement(INBOUND_ID);
});

test('Add lines using buttons and rollback from send page test', async ({
createInboundPage,
stockMovementShowPage,
page,
}) => {
await test.step('Go to create inbound page', async () => {
await createInboundPage.goToPage();
await createInboundPage.createStep.isLoaded();
await createInboundPage.wizzardSteps.assertActiveStep('Create');
});

await test.step('Create Stock Movement step', async () => {
await createInboundPage.createStep.originSelect.findAndSelectOption(
ORIGIN.name
);
await createInboundPage.createStep.requestedBySelect.findAndSelectOption(
USER.name
);
await createInboundPage.createStep.dateRequestedDatePicker.fill(TODAY);
await createInboundPage.createStep.descriptionField.textbox.fill(
DESCRIPTION
);
});

await test.step('Go next step (Add items)', async () => {
await createInboundPage.nextButton.click();
await createInboundPage.addItemsStep.isLoaded();
});

INBOUND_ID = createInboundPage.getId();

await test.step('Add first line items (Add items)', async () => {
const data = ROWS[0];
const row = createInboundPage.addItemsStep.table.row(0);
await row.productSelect.findAndSelectOption(data.productName);
await row.quantityField.numberbox.fill(data.quantity);
await row.lotField.textbox.fill(data.lotNumber);
await row.recipientSelect.findAndSelectOption(data.recipient);

expect(await createInboundPage.addItemsStep.table.rows.count()).toBe(1);
});

await test.step('Add second line item using tab', async () => {
await page.keyboard.press('Tab');
expect(await createInboundPage.addItemsStep.table.rows.count()).toBe(2);

const data = ROWS[1];
const row = createInboundPage.addItemsStep.table.row(1);
await row.productSelect.findAndSelectOption(data.productName);
await row.quantityField.numberbox.fill(data.quantity);
await row.lotField.textbox.fill(data.lotNumber);
await row.recipientSelect.findAndSelectOption(data.recipient);
});

await test.step('Add third line item using right arrow', async () => {
await page.keyboard.press('ArrowRight');
expect(await createInboundPage.addItemsStep.table.rows.count()).toBe(3);

const data = ROWS[2];
const row = createInboundPage.addItemsStep.table.row(2);
await row.productSelect.findAndSelectOption(data.productName);
await row.quantityField.numberbox.fill(data.quantity);
await row.lotField.textbox.fill(data.lotNumber);
await row.recipientSelect.findAndSelectOption(data.recipient);
});

await test.step('Go to next step (Send)', async () => {
await createInboundPage.nextButton.click();
await createInboundPage.wizzardSteps.assertActiveStep('Send');
await createInboundPage.sendStep.isLoaded();
});

await test.step('Fill shipment fields (Send)', async () => {
await createInboundPage.sendStep.shipmentTypeSelect.findAndSelectOption(
SHIPMENT_TYPE
);
await createInboundPage.sendStep.expectedDeliveryDatePicker.fill(
EXPECTED_DELIVERY_DATE
);
});

await test.step('Send shipment', async () => {
await createInboundPage.sendStep.sendShipmentButton.click();
await stockMovementShowPage.waitForUrl();
await stockMovementShowPage.isLoaded();
});

await test.step('Open send page for shipped inbound and assert ship date fied is disabled', async () => {
await stockMovementShowPage.editButton.click();
await createInboundPage.sendStep.isLoaded();
await expect(
createInboundPage.sendStep.shipDateDatePicker.textbox
).toBeDisabled();
await expect(
createInboundPage.sendStep.sendShipmentButton
).toBeDisabled();
await expect(
createInboundPage.sendStep.getShipmentStatus('SHIPPED')
).toBeVisible();
await expect(createInboundPage.sendStep.rollbackButton).toBeEnabled();
});

await test.step('Rollback shipment from send page', async () => {
await createInboundPage.sendStep.rollbackButton.click();
await createInboundPage.sendStep.isLoaded();
await expect(
createInboundPage.sendStep.shipDateDatePicker.textbox
).toBeEnabled();
await expect(createInboundPage.sendStep.sendShipmentButton).toBeEnabled();
await expect(
createInboundPage.sendStep.getShipmentStatus('PENDING')
).toBeVisible();
await expect(createInboundPage.sendStep.rollbackButton).toBeHidden();
});

await test.step('Save and exit from inbound and assert status on view page', async () => {
await createInboundPage.sendStep.saveAndExitButton.click();
await stockMovementShowPage.isLoaded();
await expect(stockMovementShowPage.statusTag).toHaveText('Checking');
});
});
});
6 changes: 3 additions & 3 deletions src/tests/receiving/editOriginalLineQtyTo0.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ test.describe('Edit qty of original line to 0', () => {
});

await test.step('Assert received lines on Receipt tab', async () => {
await stockMovementShowPage.receiptTab.click();
await stockMovementShowPage.openReceiptsTab();
await expect(stockMovementShowPage.receiptListTable.rows).toHaveCount(3);
await expect(
stockMovementShowPage.receiptListTable.row(1).serialLotNumber
Expand All @@ -204,7 +204,7 @@ test.describe('Edit qty of original line to 0', () => {
});

await test.step('Assert received lines on Packing list', async () => {
await stockMovementShowPage.packingListTab.click();
await stockMovementShowPage.openPackingListTab();
await expect(
stockMovementShowPage.packingListTable.row(1).lotNumber
).not.toHaveText(lot);
Expand Down Expand Up @@ -358,7 +358,7 @@ test.describe('Edit original line to other product in the middle of receipt', ()
await test.step('Assert received product on stock movement show page', async () => {
const PRODUCT_FOUR = await productService.getProduct(Product.FOUR);
const PRODUCT_FIVE = await productService.getProduct(Product.FIVE);
await stockMovementShowPage.packingListTab.isVisible();
await stockMovementShowPage.openPackingListTab();
await expect(
stockMovementShowPage.packingListTable.row(1).product
).toHaveText(PRODUCT_FOUR.name);
Expand Down
Loading