Advertisement
Guest User

refactor

a guest
Nov 3rd, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.56 KB | None | 0 0
  1. add_company.po
  2.  
  3. 'use strict';
  4. const commonHelper = require('./helpers/common.helper');
  5.  
  6. class AddCompanyPage {
  7. constructor() {
  8. this.companyTitle = $('h3');
  9. this.txtCompanyName = element(by.model('company.name'));
  10. this.txtCompanySite = element(by.model('company.website'));
  11. this.txtCompanyNote = element(by.model('company.notes'));
  12. this.txtCompanyType = $('[name="kind"]');
  13. this.btnSave = $('[aria-label="Save"]');
  14. this.imageCompany = $('[src="company.icon_path"]');
  15. this.txtSeachCompany = element(by.model('paginator.query.name__icontains'));
  16. }
  17.  
  18. selectCompanyType(type){
  19. browser.waitForAngular();
  20. commonHelper.waitUntilElementVisible(this.txtCompanyType);
  21. browser.sleep(1000);
  22. this.txtCompanyType.click();
  23. browser.sleep(2000);
  24. element(by.xpath('//div[contains(@class, "md-select-menu-container")]//div[contains(.,"'+ type +'")]')).click();
  25. }
  26.  
  27. searchCompany(name){
  28. return element(by.xpath('//*[contains(@class, "md-cell ng-binding")][contains(.,"'+ name +'")]'));
  29. }
  30. }
  31.  
  32. module.exports = AddCompanyPage;
  33.  
  34. ---------------------------------------------------
  35. add_contact.po
  36.  
  37. 'use strict';
  38. const commonHelper = require('./helpers/common.helper');
  39.  
  40. class AddContactPage {
  41. constructor() {
  42. this.txtContactName = element(by.model('contact.first_name'));
  43. this.txtContactLastName = element(by.model('contact.last_name'));
  44. this.txtContactTitte = element(by.model('contact.title'));
  45. this.txtContactNumber = element(by.model('contact.phone_number'));
  46. this.txtContactEmail = element(by.model('contact.email'));
  47. this.txtContactsCompany = $('[name="company"]');
  48. this.txtContactsOffices = $('[name="offices"]');
  49. this.txtSeachContacts = element(by.model('paginator.query.search'))
  50. this.btnSave = $('[aria-label="Save"]');
  51. this.btnEditContact = element(by.xpath('//a[text()="Edit Contact"]'));
  52. this.tittleEdit = element(by.xpath('//*[contains(.,"Edit Contact")]'));
  53. }
  54.  
  55. getBtnDetailsContact(){
  56. return element(by.xpath('//div[contains(@class,"md-whiteframe layout-padding")]//*[contains(@class, "material-icons")][contains(.,"info")]'));
  57. }
  58.  
  59. getTable(attribute) {
  60. return element(by.xpath('//span[text()=.,"'+ attribute +'"]'))
  61. }
  62.  
  63. saveCompany(){
  64. browser.executeScript('document.querySelector(".md-select-backdrop").remove()');
  65. browser.executeScript('document.getElementsByClassName("md-scroll-mask")[0].style.display = "none"');
  66. this.btnSave.click();
  67. }
  68.  
  69. selectContactOffices(name){
  70. browser.waitForAngular();
  71. commonHelper.waitUntilElementVisible(this.txtContactsOffices);
  72. browser.sleep(1000);
  73. this.txtContactsOffices.click();
  74. browser.sleep(2000);
  75. element(by.xpath('//div[contains(@class, "md-select-menu-container")]//div[contains(.,"'+ name +'")]')).click();
  76. browser.executeScript('document.getElementsByClassName("md-select-menu-container md-oc-theme md-active md-clickable")[0].style.display = "none"')
  77. }
  78.  
  79. selectContactCompany(name){
  80. browser.waitForAngular();
  81. commonHelper.waitUntilElementVisible(this.txtContactsCompany);
  82. browser.sleep(1000);
  83. this.txtContactsCompany.click();
  84. browser.sleep(2000);
  85. element(by.xpath('//div[contains(@class, "md-select-menu-container md-oc-theme md-active md-clickable")]//div[contains(.,"'+ name +'")]')).click();
  86. }
  87. }
  88.  
  89. module.exports = AddContactPage;
  90. -------------------------------------------------------------
  91. contacts.po
  92.  
  93. 'use strict';
  94.  
  95. const commonHelper = require('./helpers/common.helper');
  96.  
  97. class ContactsPage {
  98. constructor() {
  99. this.btnAddContacts = $('[aria-label="Add Contact"]');
  100. this.txtContactsOffices = element(by.model('contact.offices'));
  101. this.txtOfficeCompany = element(by.xpath('//label[text()="Company"]'));
  102. this.txtOfficeName = $('[ng-model="office.name"][name="officeForm"]');
  103. this.txtOfficeRegion = element(by.model('office.region'));
  104. this.txtOfficePhone = element(by.model('office.phone_number'));
  105. this.txtOfficeATTN = element(by.model('office.address.attn_line'));
  106. this.txtOfficeLine1 = element(by.model('office.address.line1'));
  107. this.txtOfficeLine2 = element(by.model('office.address.line2'));
  108. this.txtOfficeCity = element(by.model('office.address.city'));
  109. this.txtOfficeState = element(by.model('office.address.state'));
  110. this.txtOfficeZipcode = element(by.model('office.address.zipcode'));
  111. this.txtOfficeCountry = element(by.model('office.address.country'));
  112. }
  113.  
  114. getTable(name){
  115. return element(by.xpath('//div[containd(@class, "md-list-item-text")]/*[contains(,."'+ name +'")]'));
  116.  
  117. }
  118.  
  119. selectContactOffices(name){
  120. browser.waitForAngular();
  121. commonHelper.waitUntilElementVisible(this.txtOfficeCompany);
  122. browser.sleep(1000);
  123. this.txtOfficeCompany.click();
  124. browser.sleep(2000);
  125. element(by.xpath('//div[contains(@class, "md-select-menu-container md-oc-theme md-active md-clickable")]//*[contains(@class,"ng-scope md-checkbox-enabled md-ink-ripple")]//*[contains(.,"'+ name +'")]')).click();
  126. browser.executeScript('document.getElementsByClassName("md-select-menu-container md-oc-theme md-active md-clickable")[0].style.display = "none"')
  127. }
  128.  
  129. selectCompanyType(type){
  130. browser.waitForAngular();
  131. commonHelper.waitUntilElementVisible(this.txtCompanyType);
  132. browser.sleep(1000);
  133. this.txtCompanyType.click();
  134. browser.sleep(2000);
  135. element(by.xpath('//div[contains(@class, "md-select-menu-container")]//div[contains(.,"'+ type +'")]')).click();
  136. }
  137.  
  138. selectRegion(type){
  139. browser.waitForAngular();
  140. commonHelper.waitUntilElementVisible(this.txtOfficeRegion);
  141. browser.sleep(1000);
  142. this.txtOfficeRegion.click();
  143. browser.sleep(2000);
  144. element(by.xpath('//div[contains(@class, "md-select-menu-container")]//div[contains(.,"'+ type +'")]')).click();
  145. }
  146. }
  147.  
  148. module.exports = ContactsPage;
  149.  
  150. -------------------------------------------------------
  151. dashboard.spec
  152.  
  153. 'use strict';
  154.  
  155. const pageObject = require('./../../services').container.PageObject;
  156. const signInPage = pageObject.getSignInPage();
  157. const dashboardPage = pageObject.getDashboardPage();
  158. const editTicketPage = pageObject.getEditTicketPage();
  159. const addCompanyPage = pageObject.getAddCompanyPage();
  160. const addContactsPage = pageObject.getAddContactPage();
  161. const signInData = require('./../../data/sign_in');
  162. const dashboardData = require('./../../data/dashboard');
  163. const commonHelper = require('./../../services/helpers/common.helper');
  164. var strftime = require('strftime');
  165.  
  166. describe('Dashboard', () => {
  167.  
  168. var username = signInData.testAccount.username;
  169. var password = signInData.testAccount.password;
  170. var name = dashboardData.companies.name;
  171. var site = dashboardData.companies.site;
  172. var type = dashboardData.companies.type;
  173. var editName = dashboardData.editCompanies.name;
  174. var editSite = dashboardData.editCompanies.site;
  175. var editType = dashboardData.editCompanies.type;
  176. var contactsName = dashboardData.contacts.name;
  177. var contactsLastName = dashboardData.contacts.lastName;
  178. var contactsTittle = dashboardData.contacts.tittle;
  179. var contactsCompany = dashboardData.contacts.company;
  180. var contactsOffice = dashboardData.contacts.office;
  181. var contactsEmail = dashboardData.contacts.email;
  182. var contactsEditName = dashboardData.editContacts.name;
  183. var contactsEditLastName = dashboardData.editContacts.lastName;
  184. var contactsEditTittle = dashboardData.editContacts.tittle;
  185. var contactsEditCompany = dashboardData.editContacts.company;
  186. var contactsEditOffice = dashboardData.editContacts.office;
  187. var contactsEditEmail = dashboardData.editContacts.email;
  188.  
  189.  
  190. beforeAll(() => {
  191. browser.ignoreSynchronization = false;
  192. browser.driver.manage().window().setSize(1440, 900);
  193. });
  194.  
  195. afterAll(() => {
  196. commonHelper.clearAllData();
  197. });
  198.  
  199. describe('checking for add and edit company', () => {
  200.  
  201. var time = commonHelper.uniqueValue();
  202.  
  203. beforeAll(() => {
  204. browser.get(signInData.link);
  205. });
  206.  
  207. afterAll(() => {
  208. commonHelper.clearAllData();
  209. });
  210.  
  211. it('should open login page', () => {
  212. expect(signInPage.btnLogin.isDisplayed()).toBe(true);
  213. });
  214.  
  215. it('should redirect on dashboard page after login', () => {
  216. signInPage.login(username, password);
  217. commonHelper.waitUntilElementPresent(dashboardPage.menu);
  218.  
  219. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  220. });
  221.  
  222. it('should click on add company', () => {
  223. dashboardPage.btnAddCompany.click();
  224.  
  225. expect(addCompanyPage.companyTitle.getText()).toEqual('Add Company');
  226. });
  227.  
  228. it('should add company', () => {
  229. addCompanyPage.txtCompanyName.sendKeys(name + time);
  230. addCompanyPage.txtCompanySite.sendKeys(site);
  231. addCompanyPage.selectCompanyType(type);
  232. addCompanyPage.txtCompanyNote.sendKeys(time);
  233. });
  234.  
  235. it('should add icon for company',() => {
  236. editTicketPage.uploadAttachment('index.jpg');
  237. addCompanyPage.btnSave.click();
  238.  
  239. expect(addCompanyPage.imageCompany.isDisplayed()).toBe(true);
  240. });
  241.  
  242. it('should redirect to dashboard',() => {
  243. dashboardPage.openMenu('Dashboard');
  244.  
  245. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  246. });
  247.  
  248. it('should search company',() => {
  249. addCompanyPage.txtSeachCompany.sendKeys(name + time);
  250. commonHelper.waitUntilElementVisible(addCompanyPage.searchCompany(name + time));
  251. });
  252.  
  253. it('should click on edit button',() => {
  254. dashboardPage.btnEdit.click();
  255.  
  256. expect(addCompanyPage.companyTitle.getText()).toEqual('Edit Company');
  257. });
  258.  
  259. it('should clear data', () => {
  260. addCompanyPage.txtCompanyName.clear();
  261. addCompanyPage.txtCompanySite.clear();
  262. addCompanyPage.txtCompanyNote.clear();
  263. });
  264.  
  265. it('should edit company', () => {
  266. addCompanyPage.txtCompanyName.sendKeys(editName + time);
  267. addCompanyPage.txtCompanySite.sendKeys(editSite);
  268. addCompanyPage.selectCompanyType(editType);
  269. addCompanyPage.txtCompanyNote.sendKeys(time);
  270. });
  271.  
  272. it('should edit icon for company',() => {
  273. editTicketPage.uploadAttachment('index.jpg');
  274. addCompanyPage.btnSave.click();
  275.  
  276. expect(addCompanyPage.imageCompany.isDisplayed()).toBe(true);
  277. });
  278.  
  279. it('should redirect to dashboard',() => {
  280. dashboardPage.openMenu('Dashboard');
  281.  
  282. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  283. });
  284.  
  285. it('should search company',() => {
  286. addCompanyPage.txtSeachCompany.sendKeys(editName + time);
  287. commonHelper.waitUntilElementVisible(addCompanyPage.searchCompany(editName + time));
  288. });
  289.  
  290. it('should see changes in company details',() => {
  291. dashboardPage.btnDetails.click();
  292.  
  293. expect(dashboardPage.pageTittle.getText()).toEqual('PineApple' + time);
  294. });
  295. });
  296.  
  297. describe('checking for add and edit contact', () => {
  298.  
  299. var time = commonHelper.uniqueValue();
  300.  
  301. beforeAll(() => {
  302. browser.get(signInData.link);
  303. });
  304.  
  305. afterAll(() => {
  306. commonHelper.clearAllData();
  307. });
  308.  
  309. it('should open login page', () => {
  310. expect(signInPage.btnLogin.isDisplayed()).toBe(true);
  311. });
  312.  
  313. it('should redirect on dashboard page after login', () => {
  314. signInPage.login(username, password);
  315. commonHelper.waitUntilElementPresent(dashboardPage.menu);
  316.  
  317. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  318. });
  319.  
  320. it('should click on add contacts', () => {
  321. dashboardPage.btnAddContacts.click();
  322. });
  323.  
  324. it('should add contacts', () => {
  325. addContactsPage.txtContactName.sendKeys(contactsName + time);
  326. addContactsPage.txtContactLastName.sendKeys(contactsLastName);
  327. addContactsPage.txtContactTitte.sendKeys(contactsTittle);
  328. addContactsPage.selectContactCompany(contactsCompany);
  329. addContactsPage.selectContactOffices(contactsOffice);
  330. addContactsPage.txtContactNumber.sendKeys(time);
  331. addContactsPage.txtContactEmail.sendKeys(contactsEmail);
  332. });
  333.  
  334. it('should save contacts', () => {
  335. addContactsPage.saveCompany();
  336. });
  337.  
  338. it('should redirect to dashboard',() => {
  339. dashboardPage.openMenu('Dashboard');
  340.  
  341. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  342. });
  343.  
  344. it('should search contacts',() => {
  345. addContactsPage.txtSeachContacts.sendKeys(contactsName + time);
  346. commonHelper.waitUntilElementVisible(addCompanyPage.searchCompany(contactsName + time));
  347. });
  348.  
  349. it('should see contacts details',() => {
  350. addContactsPage.getBtnDetailsContact().click();
  351.  
  352. expect(dashboardPage.pageTittle.getText()).toEqual(contactsTittle);
  353. expect(addContactsPage.getTable(contactsEmail));
  354. expect(addContactsPage.getTable(time));
  355. });
  356.  
  357. it('should click on edit contacts', () => {
  358. addContactsPage.btnEditContact.click();
  359.  
  360. commonHelper.waitUntilElementVisible(addContactsPage.tittleEdit);
  361. });
  362.  
  363. it('should clear data', () => {
  364. addContactsPage.txtContactName.clear();
  365. addContactsPage.txtContactLastName.clear();
  366. addContactsPage.txtContactTitte.clear();
  367. addContactsPage.txtContactNumber.clear();
  368. addContactsPage.txtContactEmail.clear();
  369. });
  370.  
  371. it('should edit contacts', () => {
  372. addContactsPage.txtContactName.sendKeys(contactsEditName + time);
  373. addContactsPage.txtContactLastName.sendKeys(contactsEditLastName);
  374. addContactsPage.txtContactTitte.sendKeys(contactsEditTittle);
  375. addContactsPage.selectContactCompany(contactsEditCompany);
  376. addContactsPage.selectContactOffices(contactsEditOffice);
  377. addContactsPage.txtContactNumber.sendKeys(time + '00');
  378. addContactsPage.txtContactEmail.sendKeys(contactsEditEmail);
  379. });
  380.  
  381. it('should save contacts', () => {
  382. addContactsPage.saveCompany();
  383. });
  384.  
  385. it('should redirect to dashboard',() => {
  386. dashboardPage.openMenu('Dashboard');
  387.  
  388. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  389. });
  390.  
  391. it('should search contacts',() => {
  392. addContactsPage.txtSeachContacts.sendKeys(contactsEditName + time);
  393. commonHelper.waitUntilElementVisible(addCompanyPage.searchCompany(contactsEditName + time));
  394. });
  395.  
  396. it('should see contacts details',() => {
  397. addContactsPage.getBtnDetailsContact().click();
  398.  
  399. expect(dashboardPage.pageTittle.getText()).toEqual(contactsEditTittle);
  400. expect(addContactsPage.getTable(contactsEditEmail));
  401. expect(addContactsPage.getTable(time + '00'));
  402. });
  403. });
  404. });
  405. --------------------------------------------------
  406. edit_ticket
  407.  
  408. 'use strict';
  409.  
  410. const commonHelper = require('./helpers/common.helper');
  411.  
  412. class EditTicketPage {
  413. constructor() {
  414. this.btnSaveTicket = $('[ng-click="save(ticketForm)"]');
  415. this.txtLocation = $('[aria-label="Location"]');
  416. this.txtAfe = $('[aria-label="AFE#"]');
  417. this.txtJobCode = $('[aria-label="Job Code"]');
  418. this.btnNewLine = $('[ng-click="editLineItem()"]');
  419. this.txtCategory = $('[aria-label="Category"]');
  420. this.txtSubcategory = $('[aria-label="Subcategory"]');
  421. this.btnSaveClose = $('[ng-click="save(lineItemForm)"]');
  422. this.tittle = $('[ng-show="showLineItems"] h2');
  423. this.txtLineNote = element(by.model('line.notes'));
  424. this.btnEditLine = $('[ng-click="editLineItem(li)"]');
  425. this.txtSelectHour = $('[placeholder="/hr"]');
  426. this.txtRate = element(by.model('line.usage_rate'));
  427. this.txtHours = element(by.model('line.units_min'));
  428. this.txtQuantity = element(by.model('line.units_used'));
  429. this.txtTotal = element(by.model('line.amount'));
  430. this.txtDiscount = element(by.model('line.discount'));
  431. this.txtMinimum = $('[name="minimum"]');
  432. this.txtDaysStandby = element(by.model('line.units_standby'));
  433. this.txtStandbyRate = element(by.model('line.standby_rate'));
  434. this.txtCalendarStartDate = $('[ng-model="line.start_datetime"] .md-datepicker-input');
  435. this.txtCalendarEndDate = $('[ng-model="line.end_datetime"] .md-datepicker-input');
  436. this.txtStartHour = element(by.model('data.startHour'));
  437. this.txtStartMinute = element(by.model('data.startMinute'));
  438. this.txtEndHour = element(by.model('data.endHour'));
  439. this.txtEndMinute = element(by.model('data.endMinute'));
  440. this.btnAddSignature = element(by.xpath('//div[contains(@class, "ticket-signatures")]//span[contains(.,"Add Signature")]'));
  441. this.btnSaveSignature = $('[aria-label="Add Signature"]');
  442. this.txtSigatureName = element(by.model('signature.name'));
  443. this.txtSignatureStyle = $('[aria-label="Select Style"]');
  444. this.txtSignatureEmail = element(by.model('signature.email'));
  445. this.txtEmailCertify = element(by.model('signature.wat'));
  446. this.txtFeedback = element(by.model('rating.feedback'));
  447. this.btnCheckboxSignature = element(by.model('agree'));
  448. this.SignatureBlock = $('[class^="signature-block"]');
  449. this.LeaveRatigCheckbox = element(by.model('enableRating'));
  450. this.btnAddNotes = element(by.xpath('//div[contains(@class, "ticket-notes")]//span[contains(.,"Add Note")]'));
  451. this.btnSaveNote = $('[ng-click="save(notesForm)"]');
  452. this.txtNote = element(by.model('note.notes'));
  453. this.btnMemberSaved = $('[aria-label="Save and Close"]');
  454. this.memberCheckbox = element(by.model('selected[contact.id]'));
  455. this.btnAddMember = $('[ng-click="showContacts()"]');
  456. this.btnAddAttachment = $('.ticket-attachments [ng-click^="modalUp"]');
  457. this.mdlNewAttachment = $('[ng-controller="TicketsAttachmentDialogController"]');
  458. this.attachmentInputField = $('[type="file"]');
  459. this.saveAttachment = $('[ng-click="save()"]');
  460. }
  461.  
  462. selectHour(hour){
  463. browser.waitForAngular();
  464. commonHelper.waitUntilElementVisible(this.txtSelectHour);
  465. this.txtSelectHour.click();
  466. browser.sleep(500);
  467. element(by.xpath('//div[contains(@class, "md-active md-clickable")]//div[contains(.,"'+ hour +'")]')).click();
  468. }
  469.  
  470. selectCategory(category){
  471. browser.waitForAngular();
  472. commonHelper.waitUntilElementVisible(this.txtCategory);
  473. browser.sleep(1000);
  474. this.txtCategory.click();
  475. browser.sleep(2000);
  476. element(by.xpath('//div[contains(@class, "md-active md-clickable")]//div[contains(.,"'+ category +'")]')).click();
  477. }
  478.  
  479. selectSubCategory(category){
  480. browser.waitForAngular();
  481. commonHelper.waitUntilElementVisible(this.txtSubcategory);
  482. this.txtSubcategory.click();
  483. browser.sleep(500);
  484. element(by.xpath('//div[contains(@class, "md-active md-clickable")]//em[contains(.,"'+ category +'")]')).click();
  485. }
  486.  
  487. getRate(section, index) {
  488. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="usage_rate"]/span'))
  489. }
  490.  
  491. getUnitsMin(section, index) {
  492. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="units_min"]/span'))
  493. }
  494.  
  495. getMin(section, index) {
  496. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="minimum"]/span'))
  497. }
  498.  
  499. getAmount(section, index) {
  500. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="amount"]/span'))
  501. }
  502.  
  503. getNote(section, index) {
  504. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@ng-if="li.notes"]'))
  505. }
  506.  
  507. getStandBy(section, index) {
  508. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="standby_rate"]/span'))
  509. }
  510.  
  511. getUnitStandBy(section, index) {
  512. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="units_standby"]/span'))
  513. }
  514.  
  515. getUnitUsed(section, index) {
  516. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="units_used"]/span'))
  517. }
  518.  
  519. selectSignatureCertify() {
  520. browser.waitForAngular();
  521. commonHelper.waitUntilElementVisible(this.txtEmailCertify);
  522. this.txtEmailCertify.click();
  523. browser.sleep(500);
  524. element(by.xpath('//*[contains(@class, "md-active md-clickable")]//div[contains(.,"This Form")]')).click();
  525. }
  526.  
  527. checkboxSelected() {
  528. return element(by.xpath('//*[contains(@class, "md-oc-theme layout-align-start-start flex")]'));
  529. }
  530.  
  531. checkboxLeaveRating() {
  532. return element(by.xpath('//*[contains(@class, "md-oc-theme")]'));
  533. }
  534.  
  535. ratePunctuality() {
  536. element(by.xpath('//div[contains(@ng-show,"enableRating")]//div[contains(.,"Punctuality:")]//i[contains(.,"star")][3]')).click();
  537. }
  538.  
  539. rateCompetence() {
  540. element(by.xpath('//div[contains(@ng-show,"enableRating")]//div[contains(.,"Competence:")]//i[contains(.,"star")][3]')).click();
  541. }
  542.  
  543. rateProfessionalism() {
  544. element(by.xpath('//div[contains(@ng-show,"enableRating")]//div[contains(.,"Professionalism:")]//i[contains(.,"star")][3]')).click();
  545. }
  546.  
  547. selectSignatureStyle() {
  548. browser.waitForAngular();
  549. commonHelper.waitUntilElementVisible(this.txtSignatureStyle);
  550. this.txtSignatureStyle.click();
  551. browser.sleep(500);
  552. element(by.xpath('//*[contains(@class, "signature_style_I")]//div[contains(.,"John Smith")]')).click();
  553. }
  554.  
  555. notePresent(note) {
  556. return element(by.xpath('//div[contains(@class, "ticket-notes hide-print")]//strong[contains(.,"'+ note +'")]'));
  557. }
  558.  
  559. teamMemberIsPresennt(text) {
  560. return element(by.xpath('//div[contains(@class, "ticket-members")]//div[contains(.,"'+ text +'")]'));
  561. }
  562.  
  563. checboxIsPresent() {
  564. return element(by.xpath('//*[contains(@class,"md-dialog-content")]//*[contains(@class, "md-container md-ink-ripple")]'));
  565. }
  566.  
  567. getStartDate(section, index) {
  568. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="start_datetime"]/span'))
  569. }
  570.  
  571. getEndDate(section, index) {
  572. return element(by.xpath('//h2[text()="'+ section +'"]/..//tbody/tr['+ index +']//*[@field="end_datetime"]/span'))
  573. }
  574.  
  575. chkMember() {
  576. return $('[ng-model="selected[contact.id]"][aria-checked="true"]');
  577. }
  578.  
  579. chkSignature() {
  580. return $('[aria-label="Consent"][aria-checked="true"]');
  581. }
  582.  
  583. uploadAttachment(name) {
  584. commonHelper.waitUntilElementPresent(this.attachmentInputField);
  585. browser.executeScript('document.querySelector("[type=file]").style.display = "block"');
  586. var path = require('path');
  587. var fileToUpload = '../data/testfiles/' + name,
  588. absolutePath = path.resolve(__dirname, fileToUpload);
  589. this.attachmentInputField.sendKeys(absolutePath);
  590. }
  591.  
  592. attachment(name) {
  593. return $('[aria-label="'+ name +'"]');
  594. }
  595. }
  596. module.exports = EditTicketPage;
  597.  
  598. ----------------------------------------------------------
  599. data/dashboard/index
  600.  
  601. 'use strict';
  602.  
  603. module.exports = {
  604. link: browser.baseUrl + '/home/',
  605. title: 'Dashboard',
  606. companies: {
  607. name: 'Microsoft',
  608. site: 'www.microsoft.com',
  609. type: 'Service'
  610. },
  611. editCompanies: {
  612. name: 'PineApple',
  613. site: 'www.pineapple.com',
  614. type: 'Other'
  615. },
  616. contacts: {
  617. name: 'Gabe',
  618. lastName: 'Malcovich',
  619. tittle: 'QA',
  620. company: 'Chevron',
  621. office: 'Chevron Corporate Offices',
  622. email: 'gabe@mailinator.com'
  623. },
  624. editContacts: {
  625. name: 'Bruse',
  626. lastName: 'Wayne',
  627. tittle: 'Tester',
  628. company: 'Lowe',
  629. office: 'Corporate Office',
  630. email: 'bruse@mailinator.com'
  631. }
  632. };
  633. ------------------------------------------
  634. job.spec
  635.  
  636. 'use strict';
  637.  
  638. const pageObject = require('./../../services').container.PageObject;
  639. const signInPage = pageObject.getSignInPage();
  640. const dashboardPage = pageObject.getDashboardPage();
  641. const jobCodePage = pageObject.getJobCodePage();
  642. const addContactsPage = pageObject.getAddContactPage();
  643. const signInData = require('./../../data/sign_in');
  644. const dashboardData = require('./../../data/dashboard');
  645. const commonHelper = require('./../../services/helpers/common.helper');
  646. var strftime = require('strftime');
  647.  
  648. describe('Jobs', () => {
  649.  
  650. var username = signInData.testAccount.username;
  651. var password = signInData.testAccount.password;
  652.  
  653. beforeAll(() => {
  654. browser.ignoreSynchronization = false;
  655. browser.driver.manage().window().setSize(1440, 900);
  656. });
  657.  
  658. afterAll(() => {
  659. commonHelper.clearAllData();
  660. });
  661.  
  662. describe('checking for add job code', () => {
  663. var time = commonHelper.uniqueValue();
  664.  
  665. beforeAll(() => {
  666. browser.get(signInData.link);
  667. });
  668.  
  669. afterAll(() => {
  670. commonHelper.clearAllData();
  671. });
  672.  
  673. it('should open login page', () => {
  674. expect(signInPage.btnLogin.isDisplayed()).toBe(true);
  675. });
  676.  
  677. it('should redirect on dashboard page after login', () => {
  678. signInPage.login(username, password);
  679. commonHelper.waitUntilElementPresent(dashboardPage.menu);
  680.  
  681. expect(dashboardPage.pageTittle.getText()).toEqual(dashboardData.title);
  682. });
  683.  
  684. it('should add job code', () => {
  685. dashboardPage.openMenu('Jobs');
  686. dashboardPage.btnJobCode.click();
  687.  
  688. expect(dashboardPage.pageTittle.getText()).toEqual('Job Codes');
  689. });
  690.  
  691. it('should click on add job code', () => {
  692. jobCodePage.btnAddCode.click();
  693.  
  694. expect(jobCodePage.pageTittle.getText()).toEqual('Add Job Code');
  695. });
  696.  
  697. it('should add job code', () => {
  698. jobCodePage.txtJobCode.sendKeys(time);
  699. jobCodePage.txtDiscription.sendKeys('Job'+time);
  700. addContactsPage.btnSave.click();
  701. commonHelper.waitUntilElementPresent(jobCodePage.btnAddCode);
  702. });
  703.  
  704. /*it('should search job code', () => {
  705. jobCodePage.txtSearchCode.sendKeys(time);
  706. commonHelper.waitUntilElementVisible(jobCodePage.searchCode(time));
  707. });
  708.  
  709. it('should see job code details',()=>{
  710. jobCodePage.btnDetailsJobe.click();
  711. });*/
  712. });
  713. });
  714. -------------------------------------------------------------
  715. job_code.po
  716.  
  717. 'use strict';
  718.  
  719. class JobCodePage {
  720. constructor() {
  721. this.btnAddCode = $('[aria-label="Add Code"]');
  722. this.pageTittle = $('h3');
  723. this.txtJobCode = element(by.model('jobCode.user_job_code_no'));
  724. this.txtDiscription = element(by.model('jobCode.description'));
  725. this.txtSearchCode = element(by.model('paginator.query.search'));
  726. this.btnDetailsJobe = element(by.xpath('//*[contains(@class,"md-table ng-isolate-scope")]//*[contains(@class, "material-icons icon-stroke")]'));
  727. }
  728.  
  729. searchCode(name){
  730. return element(by.xpath('//*[contains(@class, "md-cell ng-binding")][contains(.,"'+ name +'")]'));
  731. }
  732. }
  733. module.exports = JobCodePage;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement