-import { ref, defineEmits } from 'vue';
+import { ref } from 'vue';
import axios from 'axios';
import VnInput from 'src/components/common/VnInput.vue';
import notifyResults from 'src/utils/notifyResults';
diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue
index 8df19c0d9e8..88878076d46 100644
--- a/src/pages/Ticket/TicketList.vue
+++ b/src/pages/Ticket/TicketList.vue
@@ -232,7 +232,7 @@ const columns = computed(() => [
function resetAgenciesSelector(formData) {
agenciesOptions.value = [];
- if(formData) formData.agencyModeId = null;
+ if (formData) formData.agencyModeId = null;
}
function redirectToLines(id) {
@@ -240,7 +240,7 @@ function redirectToLines(id) {
window.open(url, '_blank');
}
-const onClientSelected = async (formData) => {
+const onClientSelected = async (formData) => {
resetAgenciesSelector(formData);
await fetchClient(formData);
await fetchAddresses(formData);
@@ -248,14 +248,12 @@ const onClientSelected = async (formData) => {
const fetchAvailableAgencies = async (formData) => {
resetAgenciesSelector(formData);
- const response= await getAgencies(formData, selectedClient.value);
+ const response = await getAgencies(formData, selectedClient.value);
if (!response) return;
-
- const { options, agency } = response
- if(options)
- agenciesOptions.value = options;
- if(agency)
- formData.agencyModeId = agency;
+
+ const { options, agency } = response;
+ if (options) agenciesOptions.value = options;
+ if (agency) formData.agencyModeId = agency;
};
const fetchClient = async (formData) => {
@@ -330,7 +328,7 @@ function openBalanceDialog(ticket) {
const description = ref([]);
const firstTicketClientId = checkedTickets[0].clientFk;
const isSameClient = checkedTickets.every(
- (ticket) => ticket.clientFk === firstTicketClientId
+ (ticket) => ticket.clientFk === firstTicketClientId,
);
if (!isSameClient) {
@@ -369,7 +367,7 @@ async function onSubmit() {
description: dialogData.value.value.description,
clientFk: dialogData.value.value.clientFk,
email: email[0].email,
- }
+ },
);
if (data) notify('globals.dataSaved', 'positive');
@@ -388,32 +386,32 @@ function setReference(data) {
switch (data) {
case 1:
newDescription = `${t(
- 'ticketList.creditCard'
+ 'ticketList.creditCard',
)}, ${dialogData.value.value.description.replace(
/^(Credit Card, |Cash, |Transfers, )/,
- ''
+ '',
)}`;
break;
case 2:
newDescription = `${t(
- 'ticketList.cash'
+ 'ticketList.cash',
)}, ${dialogData.value.value.description.replace(
/^(Credit Card, |Cash, |Transfers, )/,
- ''
+ '',
)}`;
break;
case 3:
newDescription = `${newDescription.replace(
/^(Credit Card, |Cash, |Transfers, )/,
- ''
+ '',
)}`;
break;
case 4:
newDescription = `${t(
- 'ticketList.transfers'
+ 'ticketList.transfers',
)}, ${dialogData.value.value.description.replace(
/^(Credit Card, |Cash, |Transfers, )/,
- ''
+ '',
)}`;
break;
case 3317:
diff --git a/src/pages/Travel/Card/TravelDescriptor.vue b/src/pages/Travel/Card/TravelDescriptor.vue
index 72acf91b843..922f89f333f 100644
--- a/src/pages/Travel/Card/TravelDescriptor.vue
+++ b/src/pages/Travel/Card/TravelDescriptor.vue
@@ -32,7 +32,6 @@ const setData = (entity) => (data.value = useCardDescription(entity.ref, entity.
{
-
+
diff --git a/src/pages/Worker/Card/WorkerFormation.vue b/src/pages/Worker/Card/WorkerFormation.vue
index 6fd5a4eae01..e05eca7f8c5 100644
--- a/src/pages/Worker/Card/WorkerFormation.vue
+++ b/src/pages/Worker/Card/WorkerFormation.vue
@@ -94,6 +94,7 @@ const columns = computed(() => [
align: 'left',
name: 'hasDiploma',
label: t('worker.formation.tableVisibleColumns.hasDiploma'),
+ component: 'checkbox',
create: true,
},
{
diff --git a/src/pages/Worker/Card/WorkerSummary.vue b/src/pages/Worker/Card/WorkerSummary.vue
index 992f6ec7182..78c5dfd82b3 100644
--- a/src/pages/Worker/Card/WorkerSummary.vue
+++ b/src/pages/Worker/Card/WorkerSummary.vue
@@ -9,7 +9,7 @@ import CardSummary from 'components/ui/CardSummary.vue';
import VnUserLink from 'src/components/ui/VnUserLink.vue';
import VnTitle from 'src/components/common/VnTitle.vue';
import RoleDescriptorProxy from 'src/pages/Account/Role/Card/RoleDescriptorProxy.vue';
-import DepartmentDescriptorProxy from 'src/pages/Department/Card/DepartmentDescriptorProxy.vue';
+import DepartmentDescriptorProxy from 'src/pages/Worker/Department/Card/DepartmentDescriptorProxy.vue';
import { useAdvancedSummary } from 'src/composables/useAdvancedSummary';
import WorkerDescriptorMenu from './WorkerDescriptorMenu.vue';
diff --git a/src/pages/Department/Card/DepartmentBasicData.vue b/src/pages/Worker/Department/Card/DepartmentBasicData.vue
similarity index 100%
rename from src/pages/Department/Card/DepartmentBasicData.vue
rename to src/pages/Worker/Department/Card/DepartmentBasicData.vue
diff --git a/src/pages/Department/Card/DepartmentCard.vue b/src/pages/Worker/Department/Card/DepartmentCard.vue
similarity index 77%
rename from src/pages/Department/Card/DepartmentCard.vue
rename to src/pages/Worker/Department/Card/DepartmentCard.vue
index 64ea24d42dd..2e3f1152148 100644
--- a/src/pages/Department/Card/DepartmentCard.vue
+++ b/src/pages/Worker/Department/Card/DepartmentCard.vue
@@ -1,6 +1,6 @@
{
-
+
diff --git a/src/router/modules/entry.js b/src/router/modules/entry.js
index f362c76533c..b5656dc5ffb 100644
--- a/src/router/modules/entry.js
+++ b/src/router/modules/entry.js
@@ -6,13 +6,7 @@ const entryCard = {
component: () => import('src/pages/Entry/Card/EntryCard.vue'),
redirect: { name: 'EntrySummary' },
meta: {
- menu: [
- 'EntryBasicData',
- 'EntryBuys',
- 'EntryNotes',
- 'EntryDms',
- 'EntryLog',
- ],
+ menu: ['EntryBasicData', 'EntryBuys', 'EntryNotes', 'EntryDms', 'EntryLog'],
},
children: [
{
@@ -91,7 +85,7 @@ export default {
'EntryLatestBuys',
'EntryStockBought',
'EntryWasteRecalc',
- ]
+ ],
},
component: RouterView,
redirect: { name: 'EntryMain' },
@@ -103,7 +97,7 @@ export default {
redirect: { name: 'EntryIndexMain' },
children: [
{
- path:'',
+ path: '',
name: 'EntryIndexMain',
redirect: { name: 'EntryList' },
component: () => import('src/pages/Entry/EntryList.vue'),
@@ -115,6 +109,7 @@ export default {
title: 'list',
icon: 'view_list',
},
+ component: () => import('src/pages/Entry/EntryList.vue'),
},
entryCard,
],
@@ -127,7 +122,7 @@ export default {
icon: 'add',
},
component: () => import('src/pages/Entry/EntryCreate.vue'),
- },
+ },
{
path: 'my',
name: 'MyEntries',
@@ -167,4 +162,4 @@ export default {
],
},
],
-};
\ No newline at end of file
+};
diff --git a/src/router/modules/shelving.js b/src/router/modules/shelving.js
index 55fb04278c6..c085dd8dc71 100644
--- a/src/router/modules/shelving.js
+++ b/src/router/modules/shelving.js
@@ -3,7 +3,7 @@ import { RouterView } from 'vue-router';
const parkingCard = {
name: 'ParkingCard',
path: ':id',
- component: () => import('src/pages/Parking/Card/ParkingCard.vue'),
+ component: () => import('src/pages/Shelving/Parking/Card/ParkingCard.vue'),
redirect: { name: 'ParkingSummary' },
meta: {
menu: ['ParkingBasicData', 'ParkingLog'],
@@ -16,7 +16,7 @@ const parkingCard = {
title: 'summary',
icon: 'launch',
},
- component: () => import('src/pages/Parking/Card/ParkingSummary.vue'),
+ component: () => import('src/pages/Shelving/Parking/Card/ParkingSummary.vue'),
},
{
path: 'basic-data',
@@ -25,7 +25,8 @@ const parkingCard = {
title: 'basicData',
icon: 'vn:settings',
},
- component: () => import('src/pages/Parking/Card/ParkingBasicData.vue'),
+ component: () =>
+ import('src/pages/Shelving/Parking/Card/ParkingBasicData.vue'),
},
{
path: 'log',
@@ -34,7 +35,7 @@ const parkingCard = {
title: 'log',
icon: 'history',
},
- component: () => import('src/pages/Parking/Card/ParkingLog.vue'),
+ component: () => import('src/pages/Shelving/Parking/Card/ParkingLog.vue'),
},
],
};
@@ -127,7 +128,7 @@ export default {
title: 'parkingList',
icon: 'view_list',
},
- component: () => import('src/pages/Parking/ParkingList.vue'),
+ component: () => import('src/pages/Shelving/Parking/ParkingList.vue'),
children: [
{
path: 'list',
diff --git a/src/router/modules/worker.js b/src/router/modules/worker.js
index faaa23fc870..3eb95a96ee2 100644
--- a/src/router/modules/worker.js
+++ b/src/router/modules/worker.js
@@ -201,7 +201,7 @@ const workerCard = {
const departmentCard = {
name: 'DepartmentCard',
path: ':id',
- component: () => import('src/pages/Department/Card/DepartmentCard.vue'),
+ component: () => import('src/pages/Worker/Department/Card/DepartmentCard.vue'),
redirect: { name: 'DepartmentSummary' },
meta: {
moduleName: 'Department',
@@ -215,7 +215,8 @@ const departmentCard = {
title: 'summary',
icon: 'launch',
},
- component: () => import('src/pages/Department/Card/DepartmentSummary.vue'),
+ component: () =>
+ import('src/pages/Worker/Department/Card/DepartmentSummary.vue'),
},
{
path: 'basic-data',
@@ -224,7 +225,8 @@ const departmentCard = {
title: 'basicData',
icon: 'vn:settings',
},
- component: () => import('src/pages/Department/Card/DepartmentBasicData.vue'),
+ component: () =>
+ import('src/pages/Worker/Department/Card/DepartmentBasicData.vue'),
},
],
};
diff --git a/test/cypress/integration/entry/entryList.spec.js b/test/cypress/integration/entry/entryList.spec.js
new file mode 100644
index 00000000000..5e2fa0c0156
--- /dev/null
+++ b/test/cypress/integration/entry/entryList.spec.js
@@ -0,0 +1,226 @@
+describe('Entry', () => {
+ beforeEach(() => {
+ cy.viewport(1920, 1080);
+ cy.login('buyer');
+ cy.visit(`/#/entry/list`);
+ });
+
+ it('Filter deleted entries and other fields', () => {
+ createEntry();
+ cy.get('.q-notification__message').eq(0).should('have.text', 'Data created');
+ cy.waitForElement('[data-cy="entry-buys"]');
+ deleteEntry();
+ cy.typeSearchbar('{enter}');
+ cy.get('span[title="Date"]').click().click();
+ cy.typeSearchbar('{enter}');
+ cy.url().should('include', 'order');
+ cy.get('td[data-row-index="0"][data-col-field="landed"]').should(
+ 'have.text',
+ '-',
+ );
+ });
+
+ it('Create entry, modify travel and add buys', () => {
+ createEntryAndBuy();
+ cy.get('a[data-cy="EntryBasicData-menu-item"]').click();
+ selectTravel('two');
+ cy.saveCard();
+ cy.get('.q-notification__message').eq(0).should('have.text', 'Data created');
+ deleteEntry();
+ });
+
+ it('Clone entry and recalculate rates', () => {
+ createEntry();
+
+ cy.waitForElement('[data-cy="entry-buys"]');
+
+ cy.url().then((previousUrl) => {
+ cy.get('[data-cy="descriptor-more-opts"]').click();
+ cy.get('div[data-cy="clone-entry"]').should('be.visible').click();
+
+ cy.get('.q-notification__message').eq(1).should('have.text', 'Entry cloned');
+
+ cy.url()
+ .should('not.eq', previousUrl)
+ .then(() => {
+ cy.waitForElement('[data-cy="entry-buys"]');
+
+ cy.get('[data-cy="descriptor-more-opts"]').click();
+ cy.get('div[data-cy="recalculate-rates"]').click();
+
+ cy.get('.q-notification__message')
+ .eq(2)
+ .should('have.text', 'Entry prices recalculated');
+
+ cy.get('[data-cy="descriptor-more-opts"]').click();
+ deleteEntry();
+
+ cy.log(previousUrl);
+
+ cy.visit(previousUrl);
+
+ cy.waitForElement('[data-cy="entry-buys"]');
+ deleteEntry();
+ });
+ });
+ });
+
+ it('Should notify when entry is lock by another user', () => {
+ const checkLockMessage = () => {
+ cy.get('[data-cy="entry-lock-confirm"]').should('be.visible');
+ cy.get('[data-cy="VnConfirm_message"] > span').should(
+ 'contain.text',
+ 'This entry has been locked by buyerNick',
+ );
+ };
+
+ createEntry();
+ goToEntryBuys();
+ cy.get('.q-notification__message')
+ .eq(1)
+ .should('have.text', 'The entry has been locked successfully');
+
+ cy.login('logistic');
+ cy.reload();
+ checkLockMessage();
+ cy.get('[data-cy="VnConfirm_cancel"]').click();
+ cy.url().should('include', 'summary');
+
+ goToEntryBuys();
+ checkLockMessage();
+ cy.get('[data-cy="VnConfirm_confirm"]').click();
+ cy.url().should('include', 'buys');
+
+ deleteEntry();
+ });
+
+ it('Edit buys and use toolbar actions', () => {
+ const COLORS = {
+ negative: 'rgb(251, 82, 82)',
+ positive: 'rgb(200, 228, 132)',
+ enabled: 'rgb(255, 255, 255)',
+ disable: 'rgb(168, 168, 168)',
+ };
+
+ const selectCell = (field, row = 0) =>
+ cy.get(`td[data-col-field="${field}"][data-row-index="${row}"]`);
+ const selectSpan = (field, row = 0) => selectCell(field, row).find('div > span');
+ const selectButton = (cySelector) => cy.get(`button[data-cy="${cySelector}"]`);
+ const clickAndType = (field, value, row = 0) =>
+ selectCell(field, row).click().type(value);
+ const checkText = (field, expectedText, row = 0) =>
+ selectCell(field, row).should('have.text', expectedText);
+ const checkColor = (field, expectedColor, row = 0) =>
+ selectSpan(field, row).should('have.css', 'color', expectedColor);
+
+ createEntryAndBuy();
+
+ selectCell('isIgnored')
+ .click()
+ .click()
+ .trigger('keydown', { key: 'Tab', keyCode: 9, which: 9 });
+ checkText('isIgnored', 'check');
+ checkColor('quantity', COLORS.negative);
+
+ clickAndType('stickers', '1');
+ checkText('quantity', '11');
+ checkText('amount', '550.00');
+ clickAndType('packing', '2');
+ checkText('packing', '12close');
+ checkText('weight', '12.0');
+ checkText('quantity', '132');
+ checkText('amount', '6600.00');
+ checkColor('packing', COLORS.enabled);
+
+ selectCell('groupingMode').click().click().click();
+ checkColor('packing', COLORS.disable);
+ checkColor('grouping', COLORS.enabled);
+
+ selectCell('buyingValue').click().clear().type('{backspace}{backspace}1');
+ checkText('amount', '132.00');
+ checkColor('minPrice', COLORS.disable);
+
+ selectCell('hasMinPrice').click().click();
+ checkColor('minPrice', COLORS.enabled);
+ selectCell('hasMinPrice').click();
+
+ cy.saveCard();
+ cy.get('span[data-cy="footer-stickers"]').should('have.text', '11');
+ cy.get('.q-notification__message').contains('Data saved');
+
+ selectButton('change-quantity-sign').should('be.disabled');
+ selectButton('check-buy-amount').should('be.disabled');
+ cy.get('tr.cursor-pointer > .q-table--col-auto-width > .q-checkbox').click();
+ selectButton('change-quantity-sign').should('be.enabled');
+ selectButton('check-buy-amount').should('be.enabled');
+
+ selectButton('change-quantity-sign').click();
+ selectButton('set-negative-quantity').click();
+ checkText('quantity', '-132');
+ selectButton('set-positive-quantity').click();
+ checkText('quantity', '132');
+ checkColor('amount', COLORS.disable);
+
+ selectButton('check-buy-amount').click();
+ selectButton('uncheck-amount').click();
+ checkColor('amount', COLORS.disable);
+
+ selectButton('check-amount').click();
+ checkColor('amount', COLORS.positive);
+ cy.saveCard();
+
+ cy.get('span[data-cy="footer-amount"]').should(
+ 'have.css',
+ 'color',
+ COLORS.positive,
+ );
+
+ deleteEntry();
+ });
+
+ function goToEntryBuys() {
+ const entryBuySelector = 'a[data-cy="EntryBuys-menu-item"]';
+ cy.get(entryBuySelector).should('be.visible');
+ cy.waitForElement('[data-cy="entry-buys"]');
+ cy.get(entryBuySelector).click();
+ }
+
+ function deleteEntry() {
+ cy.get('[data-cy="descriptor-more-opts"]').click();
+ cy.waitForElement('div[data-cy="delete-entry"]');
+ cy.get('div[data-cy="delete-entry"]').should('be.visible').click();
+ cy.url().should('include', 'list');
+ }
+
+ function createEntryAndBuy() {
+ createEntry();
+ createBuy();
+ }
+
+ function createEntry() {
+ cy.get('button[data-cy="vnTableCreateBtn"]').click();
+ selectTravel('one');
+ cy.get('button[data-cy="FormModelPopup_save"]').click();
+ cy.url().should('include', 'summary');
+ cy.get('.q-notification__message').eq(0).should('have.text', 'Data created');
+ }
+
+ function selectTravel(warehouse) {
+ cy.get('i[data-cy="Travel_icon"]').click();
+ cy.get('input[data-cy="Warehouse Out_select"]').type(warehouse);
+ cy.get('div[role="listbox"] > div > div[role="option"]').eq(0).click();
+ cy.get('button[data-cy="save-filter-travel-form"]').click();
+ cy.get('tr').eq(1).click();
+ }
+
+ function createBuy() {
+ cy.get('a[data-cy="EntryBuys-menu-item"]').click();
+ cy.get('a[data-cy="EntryBuys-menu-item"]').click();
+ cy.get('button[data-cy="vnTableCreateBtn"]').click();
+
+ cy.get('input[data-cy="itemFk-create-popup"]').type('1');
+ cy.get('div[role="listbox"] > div > div[role="option"]').eq(0).click();
+ cy.get('input[data-cy="Grouping mode_select"]').should('have.value', 'packing');
+ cy.get('button[data-cy="FormModelPopup_save"]').click();
+ }
+});
diff --git a/test/cypress/integration/entry/stockBought.spec.js b/test/cypress/integration/entry/stockBought.spec.js
index d56d217d399..befc6a4d309 100644
--- a/test/cypress/integration/entry/stockBought.spec.js
+++ b/test/cypress/integration/entry/stockBought.spec.js
@@ -6,6 +6,7 @@ describe('EntryStockBought', () => {
});
it('Should edit the reserved space', () => {
cy.get('.q-field__native.q-placeholder').should('have.value', '01/01/2001');
+ cy.get('td[data-col-field="reserve"]').click();
cy.get('input[name="reserve"]').type('10{enter}');
cy.get('button[title="Save"]').click();
cy.checkNotification('Data saved');
diff --git a/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js b/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js
index c6bcc37c191..11ca1bb59be 100644
--- a/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js
+++ b/test/cypress/integration/invoiceIn/invoiceInBasicData.spec.js
@@ -49,7 +49,7 @@ describe('InvoiceInBasicData', () => {
'test/cypress/fixtures/image.jpg',
{
force: true,
- }
+ },
);
cy.get('[data-cy="FormModelPopup_save"]').click();
cy.checkNotification('Data saved');
diff --git a/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js b/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js
index 5f629df0b2c..02b7fbb43ce 100644
--- a/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js
+++ b/test/cypress/integration/invoiceOut/invoiceOutNegativeBases.spec.js
@@ -7,9 +7,7 @@ describe('InvoiceOut negative bases', () => {
});
it('should filter and download as CSV', () => {
- cy.get(
- ':nth-child(7) > .full-width > :nth-child(1) > .column > div.q-px-xs > .q-field > .q-field__inner > .q-field__control'
- ).type('23{enter}');
+ cy.get('input[name="ticketFk"]').type('23{enter}');
cy.get('#subToolbar > .q-btn').click();
cy.checkNotification('CSV downloaded successfully');
});
diff --git a/test/cypress/integration/route/routeList.spec.js b/test/cypress/integration/route/routeList.spec.js
index 5ff157d2adb..04278cfc5c3 100644
--- a/test/cypress/integration/route/routeList.spec.js
+++ b/test/cypress/integration/route/routeList.spec.js
@@ -4,9 +4,6 @@ describe('Route', () => {
cy.login('developer');
cy.visit(`/#/route/extended-list`);
});
- const getVnSelect =
- '> :nth-child(1) > .column > .q-field > .q-field__inner > .q-field__control > .q-field__control-container';
- const getRowColumn = (row, column) => `:nth-child(${row}) > :nth-child(${column})`;
it('Route list create route', () => {
cy.addBtnClick();
@@ -17,15 +14,23 @@ describe('Route', () => {
it('Route list search and edit', () => {
cy.get('#searchbar input').type('{enter}');
- cy.get('input[name="description"]').type('routeTestOne{enter}');
+ cy.get('[data-col-field="description"][data-row-index="0"]')
+ .click()
+ .type('routeTestOne{enter}');
cy.get('.q-table tr')
.its('length')
.then((rowCount) => {
expect(rowCount).to.be.greaterThan(0);
});
- cy.get(getRowColumn(1, 3) + getVnSelect).type('{downArrow}{enter}');
- cy.get(getRowColumn(1, 4) + getVnSelect).type('{downArrow}{enter}');
- cy.get(getRowColumn(1, 5) + getVnSelect).type('{downArrow}{enter}');
+ cy.get('[data-col-field="workerFk"][data-row-index="0"]')
+ .click()
+ .type('{downArrow}{enter}');
+ cy.get('[data-col-field="agencyModeFk"][data-row-index="0"]')
+ .click()
+ .type('{downArrow}{enter}');
+ cy.get('[data-col-field="vehicleFk"][data-row-index="0"]')
+ .click()
+ .type('{downArrow}{enter}');
cy.get('button[title="Save"]').click();
cy.get('.q-notification__message').should('have.text', 'Data saved');
});
diff --git a/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js b/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js
index 343c1c1271e..2cd43984a5a 100644
--- a/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js
+++ b/test/cypress/integration/wagon/wagonType/wagonTypeCreate.spec.js
@@ -9,7 +9,7 @@ describe('WagonTypeCreate', () => {
it('should create a new wagon type and then delete it', () => {
cy.get('.q-page-sticky > div > .q-btn').click();
cy.get('input').first().type('Example for testing');
- cy.get('button[type="submit"]').click();
+ cy.get('[data-cy="FormModelPopup_save"]').click();
cy.get('[title="Remove"] > .q-btn__content > .q-icon').first().click();
});
});
diff --git a/test/cypress/support/waitUntil.js b/test/cypress/support/waitUntil.js
index 5fb47a2d82f..359f8643fd1 100644
--- a/test/cypress/support/waitUntil.js
+++ b/test/cypress/support/waitUntil.js
@@ -1,7 +1,7 @@
const waitUntil = (subject, checkFunction, originalOptions = {}) => {
if (!(checkFunction instanceof Function)) {
throw new Error(
- '`checkFunction` parameter should be a function. Found: ' + checkFunction
+ '`checkFunction` parameter should be a function. Found: ' + checkFunction,
);
}