#1537 refactor fixtures + e2e fixes
This commit is contained in:
parent
fcc0ad6098
commit
63febf8bd0
|
@ -424,28 +424,28 @@ INSERT INTO `vn`.`invoiceOutSerial` (`code`, `description`, `isTaxed`, `taxAreaF
|
|||
INSERT INTO `vn`.`ticket`(`id`, `priority`, `agencyModeFk`,`warehouseFk`,`routeFk`, `shipped`, `landed`, `clientFk`,`nickname`, `addressFk`, `refFk`, `isDeleted`, `created`)
|
||||
VALUES
|
||||
(1 , 3, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 'Bat cave', 121, 'T1111111', 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)),
|
||||
(2 , 1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T2222222', 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)),
|
||||
(2 , 1, 1, 1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T1111111', 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)),
|
||||
(3 , 1, 2, 2, 1, DATE_ADD(CURDATE(), INTERVAL -2 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -2 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T2222222', 0, DATE_ADD(CURDATE(), INTERVAL -2 MONTH)),
|
||||
(4 , 3, 2, 2, 1, DATE_ADD(CURDATE(), INTERVAL -3 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -3 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T3333333', 0, DATE_ADD(CURDATE(), INTERVAL -3 MONTH)),
|
||||
(5 , 3, 3, 3, 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T3333333', 0, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)),
|
||||
(6 , 1, 3, 3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 'Mountain Drive Gotham', 1, 'T4444444', 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)),
|
||||
(7 , NULL, 4, 4, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 'Mountain Drive Gotham', 1, 'T4444444', 0, CURDATE()),
|
||||
(5 , 3, 3, 3, 1, DATE_ADD(CURDATE(), INTERVAL -4 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -4 MONTH), INTERVAL +1 DAY), 104, 'Stark tower', 124, 'T4444444', 0, DATE_ADD(CURDATE(), INTERVAL -4 MONTH)),
|
||||
(6 , 1, 3, 3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -1 MONTH), INTERVAL +1 DAY), 101, 'Mountain Drive Gotham', 1, 'A1111111', 0, DATE_ADD(CURDATE(), INTERVAL -1 MONTH)),
|
||||
(7 , NULL, 4, 4, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 'Mountain Drive Gotham', 1, NULL, 0, CURDATE()),
|
||||
(8 , NULL, 1, 1, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 101, 'Bat cave', 121, NULL, 0, CURDATE()),
|
||||
(9 , NULL, 1, 5, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 'Stark tower', 124, 'A1111111', 0, CURDATE()),
|
||||
(10, 1, 1, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 'Ingram Street', 2, 'A1111111', 0, CURDATE()),
|
||||
(9 , NULL, 1, 5, 2, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 'Stark tower', 124, NULL, 0, CURDATE()),
|
||||
(10, 1, 1, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 'Ingram Street', 2, NULL, 0, CURDATE()),
|
||||
(11, 1, 7, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 102, 'NY roofs', 122, NULL, 0, CURDATE()),
|
||||
(12, 1, 1, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 'Clinton Street', 3, NULL, 0, CURDATE()),
|
||||
(13, 1, 2, 2, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 'Phone Box', 123, NULL, 0, CURDATE()),
|
||||
(12, 1, 1, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 'Phone Box', 123, NULL, 0, CURDATE()),
|
||||
(13, 1, 1, 2, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 103, 'Phone Box', 123, NULL, 0, CURDATE()),
|
||||
(14, 1, 2, 2, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 104, 'Malibu Point', 4, NULL, 0, CURDATE()),
|
||||
(15, 1, 3, 3, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 105, 'Plastic Cell', 125, NULL, 0, CURDATE()),
|
||||
(16, 1, 7, 1, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 106, 'Many Places', 126, NULL, 0, CURDATE()),
|
||||
(17, 1, 4, 4, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 107, 'Your pocket', 127, NULL, 0, CURDATE()),
|
||||
(18, 1, 4, 4, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 108, 'Cerebro', 128, NULL, 0, CURDATE()),
|
||||
(19, 1, 5, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 109, 'Luke Cage Bar', 129, NULL, 0, CURDATE()),
|
||||
(20, 1, 5, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 109, 'Somewhere Thailand', 101, NULL, 0, CURDATE()),
|
||||
(21, NULL, 5, 5, NULL, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere Holland', 102, NULL, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)),
|
||||
(22, NULL, 5, 5, NULL, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere Japan', 103, NULL, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH));
|
||||
|
||||
(19, 1, 5, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 109, 'Somewhere in Thailand', 129, NULL, 0, CURDATE()),
|
||||
(20, 1, 5, 5, 3, CURDATE(), DATE_ADD(CURDATE(), INTERVAL + 1 DAY), 109, 'Somewhere in Thailand', 129, NULL, 0, CURDATE()),
|
||||
(21, NULL, 5, 5, NULL, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere in Holland', 102, NULL, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH)),
|
||||
(22, NULL, 5, 5, NULL, DATE_ADD(CURDATE(), INTERVAL +1 MONTH), DATE_ADD(DATE_ADD(CURDATE(),INTERVAL +1 MONTH), INTERVAL +1 DAY), 109, 'Somewhere in Japan', 103, NULL, 1, DATE_ADD(CURDATE(), INTERVAL +1 MONTH));
|
||||
ccc
|
||||
INSERT INTO `vn`.`ticketObservation`(`id`, `ticketFk`, `observationTypeFk`, `description`)
|
||||
VALUES
|
||||
(1, 1, 1, 'ready'),
|
||||
|
@ -482,7 +482,7 @@ INSERT INTO `vn`.`ticketTracking`(`id`, `ticketFk`, `stateFk`, `workerFk`, `crea
|
|||
|
||||
INSERT INTO `vn`.`stowaway`(`id`, `shipFk`, `created`)
|
||||
VALUES
|
||||
(19, 20, CURDATE());
|
||||
(12, 13, CURDATE());
|
||||
|
||||
INSERT INTO `vn`.`vehicle`(`id`, `numberPlate`, `tradeMark`, `model`, `companyFk`, `warehouseFk`, `description`, `m3`, `isActive`)
|
||||
VALUES
|
||||
|
|
|
@ -398,7 +398,7 @@ let actions = {
|
|||
},
|
||||
|
||||
autocompleteSearch: function(autocompleteSelector, searchValue, done) {
|
||||
this.wait(autocompleteSelector)
|
||||
this.wait(`${autocompleteSelector} input`)
|
||||
.waitToClick(`${autocompleteSelector} input`)
|
||||
.write(`${autocompleteSelector} vn-drop-down input`, searchValue)
|
||||
.waitToClick(`${autocompleteSelector} li.active`)
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
/* eslint no-console: 0 */
|
||||
const Nightmare = require('nightmare');
|
||||
|
||||
let nightmare;
|
||||
|
||||
module.exports = function createNightmare(width = 1280, height = 720) {
|
||||
|
|
|
@ -9,7 +9,7 @@ export default {
|
|||
ticketsButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="ticket.index"]',
|
||||
invoiceOutButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="invoiceOut.index"]',
|
||||
claimsButton: 'vn-main-menu [vn-id="apps-menu"] ul > li[ui-sref="claim.index"]',
|
||||
returnToModuleIndexButton: `a[translate-attr="{title: 'Return to module index'}"]`,
|
||||
returnToModuleIndexButton: 'a[ui-sref="order.index"]',
|
||||
userMenuButton: 'vn-topbar #user',
|
||||
userLocalWarehouse: 'vn-topbar vn-popover vn-autocomplete[field="$ctrl.localWarehouseFk"]',
|
||||
userLocalBank: 'vn-topbar vn-popover vn-autocomplete[field="$ctrl.localBankFk"]',
|
||||
|
@ -19,7 +19,7 @@ export default {
|
|||
userConfigFirstAutocompleteClear: '#localWarehouse > div > div > div > vn-icon.clear',
|
||||
userConfigSecondAutocompleteClear: '#localBank > div > div > div > vn-icon.clear',
|
||||
userConfigThirdAutocompleteClear: '#localCompany > div > div > div > vn-icon.clear',
|
||||
acceptVnConfirm: 'vn-confirm button[response=ACCEPT]'
|
||||
acceptButton: 'vn-confirm button[response=ACCEPT]'
|
||||
},
|
||||
clientsIndex: {
|
||||
searchClientInput: `${components.vnTextfield}`,
|
||||
|
@ -290,9 +290,9 @@ export default {
|
|||
barcode: 'vn-item-summary [name="barcode"]'
|
||||
},
|
||||
itemDiary: {
|
||||
thirdTicketId: 'vn-item-diary vn-tbody > vn-tr:nth-child(3) > vn-td:nth-child(2) > span',
|
||||
secondTicketId: 'vn-item-diary vn-tbody > vn-tr:nth-child(2) > vn-td:nth-child(2) > span',
|
||||
firstBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(1) > vn-td.balance',
|
||||
fifthBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(5) > vn-td.balance',
|
||||
thirdBalance: 'vn-item-diary vn-tbody > vn-tr:nth-child(3) > vn-td.balance',
|
||||
warehouseAutocomplete: 'vn-item-diary vn-autocomplete[field="$ctrl.warehouseFk"]',
|
||||
},
|
||||
itemLog: {
|
||||
|
@ -338,10 +338,8 @@ export default {
|
|||
moreMenuAddToTurn: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Add turn"]',
|
||||
moreMenuDeleteTicket: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Delete ticket"]',
|
||||
moreMenuMakeInvoice: 'vn-ticket-descriptor vn-drop-down > vn-popover ul > li[name="Make invoice"]',
|
||||
addStowawayDialogSecondTicket: 'vn-ticket-descriptor > vn-add-stowaway > vn-dialog vn-table vn-tr:nth-child(2)',
|
||||
shipSelectButton: 'vn-ticket-descriptor > div > div.body > div.quicklinks > vn-button-menu[icon="icon-stowaway"]',
|
||||
addStowawayDialogFirstTicket: 'vn-ticket-descriptor > vn-add-stowaway > vn-dialog vn-table vn-tbody vn-tr',
|
||||
shipButton: 'vn-ticket-descriptor > div > div.body > div.quicklinks vn-icon[icon="icon-stowaway"]',
|
||||
shipMenuSecondTicket: 'vn-ticket-descriptor div.quicklinks vn-drop-down li:nth-child(2)',
|
||||
thursdayButton: 'vn-ticket-descriptor > vn-dialog > div > form > div.body > tpl-body > div > vn-tool-bar > vn-button:nth-child(4)',
|
||||
saturdayButton: 'vn-ticket-descriptor > vn-dialog > div > form > div.body > tpl-body > div > vn-tool-bar > vn-button:nth-child(6)',
|
||||
closeStowawayDialog: 'vn-ticket-descriptor > vn-add-stowaway > vn-dialog > div > button[class="close"]',
|
||||
|
|
|
@ -7,13 +7,12 @@ describe('Ticket Create notes path', () => {
|
|||
beforeAll(() => {
|
||||
return nightmare
|
||||
.loginAndModule('employee', 'ticket')
|
||||
.accessToSearchResult('id:1')
|
||||
.accessToSearchResult(1)
|
||||
.accessToSection('ticket.card.observation');
|
||||
});
|
||||
|
||||
it(`should click create a new note and delete a former one`, async() => {
|
||||
it('should create a new note', async() => {
|
||||
let result = await nightmare
|
||||
.waitToClick(selectors.ticketNotes.firstNoteRemoveButton)
|
||||
.waitToClick(selectors.ticketNotes.addNoteButton)
|
||||
.autocompleteSearch(selectors.ticketNotes.firstNoteTypeAutocomplete, 'observation one')
|
||||
.write(selectors.ticketNotes.firstDescriptionInput, 'description')
|
||||
|
@ -23,7 +22,7 @@ describe('Ticket Create notes path', () => {
|
|||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it(`should confirm the note is the expected one`, async() => {
|
||||
it('should confirm the note is the expected one', async() => {
|
||||
let result = await nightmare
|
||||
.reloadSection('ticket.card.observation')
|
||||
.waitToGetProperty(`${selectors.ticketNotes.firstNoteTypeAutocomplete} input`, 'value');
|
||||
|
@ -35,4 +34,13 @@ describe('Ticket Create notes path', () => {
|
|||
|
||||
expect(firstDescription).toEqual('description');
|
||||
});
|
||||
|
||||
it('should delete the note', async() => {
|
||||
let result = await nightmare
|
||||
.waitToClick(selectors.ticketNotes.firstNoteRemoveButton)
|
||||
.waitToClick(selectors.ticketNotes.submitNotesButton)
|
||||
.waitForLastSnackbar();
|
||||
|
||||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import selectors from '../../helpers/selectors.js';
|
||||
import createNightmare from '../../helpers/nightmare';
|
||||
|
||||
fdescribe('Ticket List sale path', () => {
|
||||
describe('Ticket List sale path', () => {
|
||||
const nightmare = createNightmare();
|
||||
|
||||
beforeAll(() => {
|
||||
return nightmare
|
||||
.loginAndModule('employee', 'ticket')
|
||||
.accessToSearchResult(8)
|
||||
.accessToSearchResult(12)
|
||||
.accessToSection('ticket.card.sale');
|
||||
});
|
||||
|
||||
|
@ -15,7 +15,7 @@ fdescribe('Ticket List sale path', () => {
|
|||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleColour, 'innerText');
|
||||
|
||||
expect(value).toContain('Silver');
|
||||
expect(value).toContain('Black');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the lenght', async() => {
|
||||
|
@ -29,7 +29,7 @@ fdescribe('Ticket List sale path', () => {
|
|||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSalePrice, 'innerText');
|
||||
|
||||
expect(value).toContain('1.30');
|
||||
expect(value).toContain('3.00');
|
||||
});
|
||||
|
||||
it('should confirm the first ticket sale contains the discount', async() => {
|
||||
|
@ -43,7 +43,7 @@ fdescribe('Ticket List sale path', () => {
|
|||
const value = await nightmare
|
||||
.waitToGetProperty(selectors.ticketSales.firstSaleImport, 'innerText');
|
||||
|
||||
expect(value).toContain('19.50');
|
||||
expect(value).toContain('60.00');
|
||||
});
|
||||
|
||||
it('should navigate to the catalog by pressing the new item button', async() => {
|
||||
|
|
|
@ -12,7 +12,7 @@ describe('Ticket diary path', () => {
|
|||
|
||||
it('should search for a specific ticket', async() => {
|
||||
const result = await nightmare
|
||||
.write(selectors.ticketsIndex.searchTicketInput, 'id:1')
|
||||
.write(selectors.ticketsIndex.searchTicketInput, 1)
|
||||
.waitToClick(selectors.ticketsIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1)
|
||||
.countElement(selectors.ticketsIndex.searchResult);
|
||||
|
@ -22,7 +22,7 @@ describe('Ticket diary path', () => {
|
|||
|
||||
it(`should click on the search result to access to the ticket summary`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 21')
|
||||
.waitForTextInElement(selectors.ticketsIndex.searchResult, 'Bat cave')
|
||||
.waitToClick(selectors.ticketsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
@ -31,26 +31,27 @@ describe('Ticket diary path', () => {
|
|||
});
|
||||
|
||||
it(`should navigate to the item diary from the 1st sale item id descriptor popover`, async() => {
|
||||
const itemId = 2;
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.ticketSummary.firstSaleItemId)
|
||||
.waitToClick(selectors.ticketSummary.popoverDiaryButton)
|
||||
.waitForLogin('employee')
|
||||
.goto(`${config.url}#!/item/1/diary?warehouseFk=1&ticketFk=1`)
|
||||
.goto(`${config.url}#!/item/${itemId}/diary?warehouseFk=1&ticketFk=1`)
|
||||
.parsedUrl();
|
||||
|
||||
expect(url.hash).toContain('/diary');
|
||||
});
|
||||
|
||||
it(`should check the seventh line id is marked as counter`, async() => {
|
||||
it(`should check the second line id is marked as counter`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.itemDiary.thirdTicketId, 'className');
|
||||
.waitToGetProperty(selectors.itemDiary.secondTicketId, 'className');
|
||||
|
||||
expect(result).toContain('counter');
|
||||
});
|
||||
|
||||
it(`should check the fifth line balance is marked as counter`, async() => {
|
||||
it(`should check the third line balance is marked as counter`, async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(`${selectors.itemDiary.fifthBalance} > span`, 'className');
|
||||
.waitToGetProperty(`${selectors.itemDiary.thirdBalance} > span`, 'className');
|
||||
|
||||
expect(result).toContain('counter');
|
||||
});
|
||||
|
|
|
@ -12,7 +12,7 @@ describe('Ticket descriptor path', () => {
|
|||
describe('Delete ticket', () => {
|
||||
it('should search for an specific ticket', async() => {
|
||||
const result = await nightmare
|
||||
.write(selectors.ticketsIndex.searchTicketInput, '17')
|
||||
.write(selectors.ticketsIndex.searchTicketInput, 17)
|
||||
.waitToClick(selectors.ticketsIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1)
|
||||
.countElement(selectors.ticketsIndex.searchResult);
|
||||
|
@ -22,7 +22,7 @@ describe('Ticket descriptor path', () => {
|
|||
|
||||
it(`should click on the search result to access to the ticket summary`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 26')
|
||||
.waitForTextInElement(selectors.ticketsIndex.searchResult, 'Your pocket')
|
||||
.waitToClick(selectors.ticketsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
@ -71,9 +71,9 @@ describe('Ticket descriptor path', () => {
|
|||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it(`should click on the search result to access to the ticket summary`, async() => {
|
||||
it(`should now click on the search result to access to the ticket summary`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.ticketsIndex.searchResult, 'address 28')
|
||||
.waitForTextInElement(selectors.ticketsIndex.searchResult, 'Somewhere in Thailand')
|
||||
.waitToClick(selectors.ticketsIndex.searchResult)
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
@ -85,16 +85,16 @@ describe('Ticket descriptor path', () => {
|
|||
const isVisible = await nightmare
|
||||
.waitToClick(selectors.ticketDescriptor.moreMenu)
|
||||
.waitToClick(selectors.ticketDescriptor.moreMenuAddStowaway)
|
||||
.wait(selectors.ticketDescriptor.addStowawayDialogSecondTicket)
|
||||
.isVisible(selectors.ticketDescriptor.addStowawayDialogSecondTicket);
|
||||
.wait(selectors.ticketDescriptor.addStowawayDialogFirstTicket)
|
||||
.isVisible(selectors.ticketDescriptor.addStowawayDialogFirstTicket);
|
||||
|
||||
|
||||
expect(isVisible).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should add the second ticket as stowaway', async() => {
|
||||
it('should add a ticket as stowaway', async() => {
|
||||
const result = await nightmare
|
||||
.waitToClick(selectors.ticketDescriptor.addStowawayDialogSecondTicket)
|
||||
.waitToClick(selectors.ticketDescriptor.addStowawayDialogFirstTicket)
|
||||
.waitForLastSnackbar();
|
||||
|
||||
expect(result).toEqual('Data saved!');
|
||||
|
@ -103,12 +103,11 @@ describe('Ticket descriptor path', () => {
|
|||
it(`should navigate to the added ticket using the descriptors ship button`, async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.ticketDescriptor.closeStowawayDialog)
|
||||
.waitToClick(selectors.ticketDescriptor.shipSelectButton)
|
||||
.waitToClick(selectors.ticketDescriptor.shipMenuSecondTicket)
|
||||
.waitForURL('#!/ticket/22/sale')
|
||||
.waitToClick(selectors.ticketDescriptor.shipButton)
|
||||
.waitForURL('#!/ticket/19/summary')
|
||||
.parsedUrl();
|
||||
|
||||
expect(url.hash).toContain('#!/ticket/22/sale');
|
||||
expect(url.hash).toContain('#!/ticket/19/summary');
|
||||
});
|
||||
|
||||
it(`should navigate to the ship ticket using the descriptors ship button`, async() => {
|
||||
|
@ -123,12 +122,11 @@ describe('Ticket descriptor path', () => {
|
|||
it(`should navigate back to the added ticket using the descriptors ship button`, async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.ticketDescriptor.closeStowawayDialog)
|
||||
.waitToClick(selectors.ticketDescriptor.shipSelectButton)
|
||||
.waitToClick(selectors.ticketDescriptor.shipMenuSecondTicket)
|
||||
.waitForURL('#!/ticket/22/sale')
|
||||
.waitToClick(selectors.ticketDescriptor.shipButton)
|
||||
.waitForURL('#!/ticket/19/summary')
|
||||
.parsedUrl();
|
||||
|
||||
expect(url.hash).toContain('#!/ticket/22/sale');
|
||||
expect(url.hash).toContain('#!/ticket/19/summary');
|
||||
});
|
||||
|
||||
it('should delete the stowaway', async() => {
|
||||
|
@ -151,7 +149,7 @@ describe('Ticket descriptor path', () => {
|
|||
|
||||
describe('Make invoice', () => {
|
||||
it('should login as adminBoss role then search for a ticket', async() => {
|
||||
const invoiceableTicketId = 11;
|
||||
const invoiceableTicketId = 18;
|
||||
|
||||
const url = await nightmare
|
||||
.loginAndModule('adminBoss', 'ticket')
|
||||
|
|
|
@ -3,6 +3,8 @@ import createNightmare from '../../helpers/nightmare';
|
|||
|
||||
describe('Order edit basic data path', () => {
|
||||
const nightmare = createNightmare();
|
||||
const today = new Date().getDate();
|
||||
|
||||
describe('when confirmed order', () => {
|
||||
beforeAll(() => {
|
||||
nightmare
|
||||
|
@ -27,7 +29,7 @@ describe('Order edit basic data path', () => {
|
|||
const orderId = 16;
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.globalItems.returnToModuleIndexButton)
|
||||
.waitToClick(selectors.globalItems.acceptVnConfirm)
|
||||
.waitToClick(selectors.globalItems.acceptButton)
|
||||
.wait(selectors.ordersIndex.createOrderButton)
|
||||
.accessToSearchResult(orderId)
|
||||
.accessToSection('order.card.basicData')
|
||||
|
@ -48,13 +50,20 @@ describe('Order edit basic data path', () => {
|
|||
});
|
||||
|
||||
describe('when new order', () => {
|
||||
const today = new Date().getDate();
|
||||
it('should navigate to order index and create a new one', async() => {
|
||||
it('should navigate to the order index and click the new order button', async() => {
|
||||
const url = await nightmare
|
||||
.waitToClick(selectors.globalItems.returnToModuleIndexButton)
|
||||
.waitToClick(selectors.globalItems.acceptVnConfirm)
|
||||
.waitToClick(selectors.globalItems.acceptButton)
|
||||
.waitToClick(selectors.ordersIndex.createOrderButton)
|
||||
.autocompleteSearch(selectors.createOrderView.clientAutocomplete, 'Bruce Wayne')
|
||||
.waitForURL('#!/order/create')
|
||||
.parsedUrl();
|
||||
|
||||
expect(url.hash).toContain('#!/order/create');
|
||||
});
|
||||
|
||||
it('should now create a new one', async() => {
|
||||
const url = await nightmare
|
||||
.autocompleteSearch(selectors.createOrderView.clientAutocomplete, 'Jessica Jones')
|
||||
.datePicker(selectors.createOrderView.landedDatePicker, 0, today)
|
||||
.autocompleteSearch(selectors.createOrderView.agencyAutocomplete, 'inhouse pickup')
|
||||
.waitToClick(selectors.createOrderView.createButton)
|
||||
|
@ -78,8 +87,7 @@ describe('Order edit basic data path', () => {
|
|||
.autocompleteSearch(selectors.orderBasicData.clientAutocomplete, 'Tony Stark')
|
||||
.autocompleteSearch(selectors.orderBasicData.addressAutocomplete, 'Tony Stark')
|
||||
.autocompleteSearch(selectors.orderBasicData.agencyAutocomplete, 'Silla247')
|
||||
.clearTextarea(selectors.orderBasicData.observationInput)
|
||||
.write(selectors.orderBasicData.observationInput, 'Observation modified')
|
||||
.write(selectors.orderBasicData.observationInput, 'my observation')
|
||||
.waitToClick(selectors.orderBasicData.saveButton)
|
||||
.waitForLastSnackbar();
|
||||
|
||||
|
@ -105,7 +113,7 @@ describe('Order edit basic data path', () => {
|
|||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.orderBasicData.observationInput, 'value');
|
||||
|
||||
expect(result).toEqual('Observation modified');
|
||||
expect(result).toEqual('my observation');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -11,15 +11,6 @@ describe('Route basic Data path', () => {
|
|||
.accessToSection('route.card.tickets');
|
||||
});
|
||||
|
||||
it('should now modify the first ticket priority', async() => {
|
||||
const result = await nightmare
|
||||
.write(selectors.routeTickets.firstTicketPriority, 4)
|
||||
.write('body', '\u000d') // simulates enter
|
||||
.waitForLastSnackbar();
|
||||
|
||||
expect(result).toEqual('Data saved!');
|
||||
});
|
||||
|
||||
it('should next modify the first ticket priority', async() => {
|
||||
const result = await nightmare
|
||||
.write(selectors.routeTickets.firstTicketPriority, 3)
|
||||
|
@ -69,13 +60,6 @@ describe('Route basic Data path', () => {
|
|||
expect(result).toEqual('3');
|
||||
});
|
||||
|
||||
it('should confirm the fourth ticket priority', async() => {
|
||||
const result = await nightmare
|
||||
.waitToGetProperty(selectors.routeTickets.fourthTicketPriority, 'value');
|
||||
|
||||
expect(result).toEqual('4');
|
||||
});
|
||||
|
||||
it('should confirm the buscamanButton is disabled', async() => {
|
||||
const result = await nightmare
|
||||
.evaluate(selector => {
|
||||
|
@ -99,7 +83,7 @@ describe('Route basic Data path', () => {
|
|||
const result = await nightmare
|
||||
.countElement('vn-route-tickets vn-textfield[model="ticket.priority"]');
|
||||
|
||||
expect(result).toEqual(4);
|
||||
expect(result).toEqual(3);
|
||||
});
|
||||
|
||||
it('should delete the first ticket in route', async() => {
|
||||
|
@ -115,6 +99,6 @@ describe('Route basic Data path', () => {
|
|||
const result = await nightmare
|
||||
.countElement('vn-route-tickets vn-textfield[model="ticket.priority"]');
|
||||
|
||||
expect(result).toEqual(3);
|
||||
expect(result).toEqual(2);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -15,10 +15,10 @@ describe('InvoiceOut descriptor path', () => {
|
|||
.waitToClick(selectors.ticketsIndex.openAdvancedSearchButton)
|
||||
.write(selectors.ticketsIndex.advancedSearchInvoiceOut, 'T2222222')
|
||||
.waitToClick(selectors.ticketsIndex.advancedSearchButton)
|
||||
.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 2)
|
||||
.waitForNumberOfElements(selectors.ticketsIndex.searchResult, 1)
|
||||
.countElement(selectors.ticketsIndex.searchResult);
|
||||
|
||||
expect(result).toEqual(2);
|
||||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it('should navigate to the invoiceOut index', async() => {
|
||||
|
@ -44,8 +44,7 @@ describe('InvoiceOut descriptor path', () => {
|
|||
|
||||
it(`should click on the search result to access to the invoiceOut summary`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.invoiceOutIndex.searchResult, 'T2222222')
|
||||
.waitToClick(selectors.invoiceOutIndex.searchResult)
|
||||
.accessToSearchResult('T2222222')
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
||||
|
@ -112,20 +111,9 @@ describe('InvoiceOut descriptor path', () => {
|
|||
expect(url.hash).toEqual('#!/invoice-out/index');
|
||||
});
|
||||
|
||||
it('should search for a new target invoiceOut', async() => {
|
||||
const result = await nightmare
|
||||
.write(selectors.invoiceOutIndex.searchInvoiceOutInput, 'A1111111')
|
||||
.waitToClick(selectors.invoiceOutIndex.searchButton)
|
||||
.waitForNumberOfElements(selectors.invoiceOutIndex.searchResult, 1)
|
||||
.countElement(selectors.invoiceOutIndex.searchResult);
|
||||
|
||||
expect(result).toEqual(1);
|
||||
});
|
||||
|
||||
it(`should now click on the search result to access to the invoiceOut summary`, async() => {
|
||||
it(`should search and access to the invoiceOut summary`, async() => {
|
||||
const url = await nightmare
|
||||
.waitForTextInElement(selectors.invoiceOutIndex.searchResult, 'A1111111')
|
||||
.waitToClick(selectors.invoiceOutIndex.searchResult)
|
||||
.accessToSearchResult('A1111111')
|
||||
.waitForURL('/summary')
|
||||
.parsedUrl();
|
||||
|
||||
|
|
|
@ -153,6 +153,15 @@ function e2eOnly() {
|
|||
|
||||
|
||||
const specFiles = [
|
||||
`${__dirname}/e2e/paths/01*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/02*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/03*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/04*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/05*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/06*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/07*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/08*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/09*/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/paths/**/*[sS]pec.js`,
|
||||
`${__dirname}/e2e/helpers/extensions.js`
|
||||
];
|
||||
|
|
|
@ -46,5 +46,7 @@
|
|||
"The value should be a number": "The value should be a number",
|
||||
"The current ticket can't be modified": "The current ticket can't be modified",
|
||||
"Extension format is invalid": "Extension format is invalid",
|
||||
"NO_ZONE_FOR_THIS_PARAMETERS": "NO_ZONE_FOR_THIS_PARAMETERS"
|
||||
"NO_ZONE_FOR_THIS_PARAMETERS": "NO_ZONE_FOR_THIS_PARAMETERS",
|
||||
"This client can't be invoiced": "This client can't be invoiced",
|
||||
"The introduced hour already exists": "The introduced hour already exists"
|
||||
}
|
|
@ -134,7 +134,7 @@
|
|||
<vn-td number ng-if="!$ctrl.isEditable">
|
||||
{{sale.price | currency: 'EUR':2}}
|
||||
</vn-td>
|
||||
<vn-td number ng-if="!$ctrl.ticket.refFk">
|
||||
<vn-td number ng-if="!$ctrl.ticket.refFk && $ctrl.isEditable">
|
||||
<span class="link"
|
||||
vn-tooltip="Edit discount"
|
||||
ng-click="$ctrl.showEditPopover($event, sale)">
|
||||
|
|
|
@ -3938,7 +3938,7 @@
|
|||
"dot-prop": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
|
||||
"integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
|
||||
"integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=",
|
||||
"requires": {
|
||||
"is-obj": "^1.0.0"
|
||||
}
|
||||
|
@ -4116,7 +4116,7 @@
|
|||
},
|
||||
"jsonfile": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
|
||||
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -6688,9 +6688,34 @@
|
|||
"kind-of": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.4",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
|
||||
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"jasmine": {
|
||||
"version": "2.99.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz",
|
||||
"integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"exit": "^0.1.2",
|
||||
"glob": "^7.0.6",
|
||||
"jasmine-core": "~2.99.0"
|
||||
}
|
||||
},
|
||||
"kind-of": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
|
||||
"integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=",
|
||||
"dev": true
|
||||
},
|
||||
|
@ -8086,20 +8111,19 @@
|
|||
}
|
||||
},
|
||||
"jasmine": {
|
||||
"version": "2.99.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz",
|
||||
"integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.4.0.tgz",
|
||||
"integrity": "sha512-sR9b4n+fnBFDEd7VS2el2DeHgKcPiMVn44rtKFumq9q7P/t8WrxsVIZPob4UDdgcDNCwyDqwxCt4k9TDRmjPoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"exit": "^0.1.2",
|
||||
"glob": "^7.0.6",
|
||||
"jasmine-core": "~2.99.0"
|
||||
"glob": "^7.1.3",
|
||||
"jasmine-core": "~3.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
|
||||
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
|
||||
"version": "7.1.4",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
|
||||
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
|
@ -8109,12 +8133,18 @@
|
|||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"jasmine-core": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.4.0.tgz",
|
||||
"integrity": "sha512-HU/YxV4i6GcmiH4duATwAbJQMlE0MsDIR5XmSVxURxKHn3aGAdbY1/ZJFmVRbKtnLwIxxMJD7gYaPsypcbYimg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jasmine-core": {
|
||||
"version": "2.99.1",
|
||||
"resolved": "http://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz",
|
||||
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz",
|
||||
"integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=",
|
||||
"dev": true
|
||||
},
|
||||
|
@ -8145,14 +8175,6 @@
|
|||
"requires": {
|
||||
"indent-string": "^2.1.0",
|
||||
"pluralize": "^1.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"pluralize": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
|
||||
"integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"jayson": {
|
||||
|
@ -8405,7 +8427,7 @@
|
|||
"karma-chrome-launcher": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz",
|
||||
"integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==",
|
||||
"integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs-access": "^1.0.0",
|
||||
|
@ -10406,7 +10428,7 @@
|
|||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "http://registry.npmjs.org/commander/-/commander-1.0.4.tgz",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-1.0.4.tgz",
|
||||
"integrity": "sha1-Xt6xruI8T7VBprcNaSq+8ZZpotM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -12874,6 +12896,12 @@
|
|||
"extend-shallow": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"pluralize": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
|
||||
"integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
|
||||
"dev": true
|
||||
},
|
||||
"portfinder": {
|
||||
"version": "1.0.20",
|
||||
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz",
|
||||
|
@ -13077,7 +13105,7 @@
|
|||
},
|
||||
"readable-stream": {
|
||||
"version": "1.1.14",
|
||||
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
|
||||
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -13089,7 +13117,7 @@
|
|||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
|
||||
"dev": true
|
||||
},
|
||||
|
@ -14372,7 +14400,7 @@
|
|||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -15967,7 +15995,7 @@
|
|||
"touch": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
|
||||
"integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==",
|
||||
"integrity": "sha1-/jZfX3XsntTlaCXgu3bSSrdK+Ds=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"nopt": "~1.0.10"
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
"gulp-yaml": "^1.0.1",
|
||||
"html-loader": "^0.4.5",
|
||||
"html-webpack-plugin": "^4.0.0-beta.5",
|
||||
"jasmine": "^2.99.0",
|
||||
"jasmine": "^3.4.0",
|
||||
"jasmine-reporters": "^2.3.2",
|
||||
"jasmine-spec-reporter": "^4.2.1",
|
||||
"json-loader": "^0.5.7",
|
||||
|
|
Loading…
Reference in New Issue