Files
jdescopingtool/TestScripts/deprecated/playwright/tests/timespan-wc-item.spec.ts
T

359 lines
12 KiB
TypeScript

/**
* E2E Tests for Search Type 100: Time Span + Work Center + Item Number
*
* This search type allows users to search by a date range combined with work center(s)
* and item number(s). It finds work orders processed through specific work centers
* for specific items within the given time range.
*
* Required filters:
* - Timespan (Min Date to Max Date)
* - Work Center (one or more)
* - Item Number (one or more via file upload)
*/
import { test, expect } from '@playwright/test';
import { navigateToSearchPage } from '../helpers/navigation.helper';
import { selectSearchType, SearchTypes, enterSearchName, clickSubmitSearch, confirmSubmitSearch } from '../helpers/search-type.helper';
import { setDateRange, setMinDate, setMaxDate, TestDateRanges } from '../helpers/date-picker.helper';
import { addWorkCenter, addWorkCenters, workCenterConfig, getAutocompleteItemCount } from '../helpers/autocomplete.helper';
import { uploadFile, itemNumberConfig, getTestFile, TestFiles, getUploadedItemCount } from '../helpers/file-upload.helper';
import { assertNoErrorNotification, hasErrorNotification } from '../helpers/radzen.helper';
import { hasValidationErrors, submitAndExpectError, ValidationMessages } from '../helpers/validation.helper';
// Valid test data from manual test scripts
const TEST_WORK_CENTERS = {
SINGLE: '10595CA',
AS_SUFFIX: ['0083AS', '0278AS', '0424AS'],
CA_SUFFIX: ['11275CA', '11350CA', '11355CA'],
CB_SUFFIX: '1700CB',
MIXED: ['1010AS', '14305CA'],
};
test.describe('Search Type 100: Time Span + Work Center + Item Number', () => {
test.beforeEach(async ({ page }) => {
await navigateToSearchPage(page);
await selectSearchType(page, SearchTypes.TIMESPAN_WC_ITEM);
});
test.describe('Positive Test Cases', () => {
test('TC-100-P01: Single Work Center with Single Item Number', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-P01 Single WC Single Item');
// Set date range (mid-range)
await setDateRange(page, '2018-01-01', '2019-12-31');
// Add single work center
await addWorkCenter(page, TEST_WORK_CENTERS.SINGLE);
// Upload single item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Verify work center was added
const wcCount = await getAutocompleteItemCount(page, workCenterConfig);
expect(wcCount).toBeGreaterThanOrEqual(1);
// Verify no error notification
await assertNoErrorNotification(page);
// Submit search
await clickSubmitSearch(page);
await confirmSubmitSearch(page);
// Should navigate to search page or show queued status
await expect(page).toHaveURL(/\/search\/\d+/);
});
test('TC-100-P02: Single Work Center with Multiple Item Numbers', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-P02 Single WC Multi Items');
// Set date range (recent)
await setDateRange(page, '2019-01-01', '2020-09-01');
// Add single work center
await addWorkCenter(page, '11275CA');
// Upload multiple items file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.MULTIPLE_ITEMS));
// Verify items were uploaded
const itemCount = await getUploadedItemCount(page, itemNumberConfig);
expect(itemCount).toBeGreaterThan(1);
// Verify no error notification
await assertNoErrorNotification(page);
// Submit search
await clickSubmitSearch(page);
await confirmSubmitSearch(page);
// Should navigate to search page
await expect(page).toHaveURL(/\/search\/\d+/);
});
test('TC-100-P03: Multiple Work Centers with Single Item Number', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-P03 Multi WC Single Item');
// Set date range (mid-range)
await setDateRange(page, '2018-01-01', '2019-12-31');
// Add multiple work centers (AS suffix)
await addWorkCenters(page, TEST_WORK_CENTERS.AS_SUFFIX);
// Verify work centers were added
const wcCount = await getAutocompleteItemCount(page, workCenterConfig);
expect(wcCount).toBe(3);
// Upload single item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Verify no error notification
await assertNoErrorNotification(page);
// Submit search
await clickSubmitSearch(page);
await confirmSubmitSearch(page);
// Should navigate to search page
await expect(page).toHaveURL(/\/search\/\d+/);
});
test('TC-100-P04: Multiple Work Centers with Multiple Item Numbers', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-P04 Multi WC Multi Items');
// Set date range (wide)
await setDateRange(page, '2017-01-01', '2020-09-01');
// Add multiple work centers
await addWorkCenter(page, '10595CA');
await addWorkCenter(page, '11350CA');
// Verify work centers were added
const wcCount = await getAutocompleteItemCount(page, workCenterConfig);
expect(wcCount).toBe(2);
// Upload multiple items file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.MULTIPLE_ITEMS));
// Verify no error notification
await assertNoErrorNotification(page);
// Submit search
await clickSubmitSearch(page);
await confirmSubmitSearch(page);
// Should navigate to search page
await expect(page).toHaveURL(/\/search\/\d+/);
});
test('TC-100-P05: Historical Date Range with Work Center and Items', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-P05 Historical Search');
// Set historical date range
await setDateRange(page, TestDateRanges.HISTORICAL.min, TestDateRanges.HISTORICAL.max);
// Add work center
await addWorkCenter(page, TEST_WORK_CENTERS.CB_SUFFIX);
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Verify no error notification
await assertNoErrorNotification(page);
// Submit search
await clickSubmitSearch(page);
await confirmSubmitSearch(page);
// Should navigate to search page
await expect(page).toHaveURL(/\/search\/\d+/);
});
test('TC-100-P06: Work Center Code Variants (AS vs CA suffix)', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-P06 WC Code Variants');
// Set date range
await setDateRange(page, '2018-01-01', '2020-09-01');
// Add work centers with different suffixes
await addWorkCenter(page, '1010AS'); // AS suffix
await addWorkCenter(page, '14305CA'); // CA suffix
// Verify both were added
const wcCount = await getAutocompleteItemCount(page, workCenterConfig);
expect(wcCount).toBe(2);
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Verify no error notification
await assertNoErrorNotification(page);
// Submit search
await clickSubmitSearch(page);
await confirmSubmitSearch(page);
// Should navigate to search page
await expect(page).toHaveURL(/\/search\/\d+/);
});
});
test.describe('Negative Test Cases', () => {
test('TC-100-N01: Missing Required Date Range', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N01 Missing Dates');
// Do NOT set date range (leave empty)
// Add work center
await addWorkCenter(page, TEST_WORK_CENTERS.SINGLE);
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N02: Missing Work Center', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N02 Missing Work Center');
// Set date range
await setDateRange(page, '2018-01-01', '2019-12-31');
// Do NOT add any work center
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N03: Missing Item Number', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N03 Missing Item Number');
// Set date range
await setDateRange(page, '2018-01-01', '2019-12-31');
// Add work center
await addWorkCenter(page, TEST_WORK_CENTERS.SINGLE);
// Do NOT upload any item file
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N04: Invalid Date Range (End Before Start)', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N04 Invalid Date Range');
// Set invalid date range (max before min)
await setDateRange(page, TestDateRanges.INVALID_REVERSED.min, TestDateRanges.INVALID_REVERSED.max);
// Add work center
await addWorkCenter(page, TEST_WORK_CENTERS.SINGLE);
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N05: Missing Minimum Date Only', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N05 Missing Min Date');
// Set only max date
await setMaxDate(page, '2019-12-31');
// Add work center
await addWorkCenter(page, '11275CA');
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N06: Missing Maximum Date Only', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N06 Missing Max Date');
// Set only min date
await setMinDate(page, '2018-01-01');
// Add work center
await addWorkCenter(page, '0083AS');
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N07: Missing Search Name', async ({ page }) => {
// Do NOT enter search name
// Set date range
await setDateRange(page, '2018-01-01', '2019-12-31');
// Add work center
await addWorkCenter(page, TEST_WORK_CENTERS.SINGLE);
// Upload item file
await uploadFile(page, itemNumberConfig, getTestFile(TestFiles.SINGLE_ITEM));
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
test('TC-100-N08: All Required Filters Missing', async ({ page }) => {
// Enter search name
await enterSearchName(page, 'Test 100-N08 All Filters Missing');
// Do NOT set date range
// Do NOT add work center
// Do NOT upload item file
// Attempt to submit
await clickSubmitSearch(page);
// Should show validation error
expect(await hasValidationErrors(page) || await hasErrorNotification(page)).toBe(true);
});
});
});