Merge branch 'main' into 'master'
Main
See merge request !1
Showing
| const baseStep = require("../../CommonStep/Web/Web_Common_Step"); | |||
| class Login_Page { | |||
| email= '//input[@id="login-password_email"]' | |||
| password= '//input[@id="login-password_password"]' | |||
| submitBtn= '//*[text()="Submit"]' | |||
| email_empty_error = '//*[@id="login-password_email_help"]/div[1]' | |||
| email_invalid_error = '//*[@id="login-password_email_help"]/div[2]' | |||
| password_empty_error = '//*[@id="login-password_password_help"]/div[1]' | |||
| user_email= '//input[@id="login-with-password_email"]' | |||
| user_password= '//input[@id="login-with-password_password"]' | |||
| user_email_empty_error = '//*[@id="login-with-password_email_help"]/div[1]' | |||
| user_email_invalid_error = '//*[@id="login-with-password_email_help"]/div[2]' | |||
| user_password_empty_error = '//*[@id="login-with-password_password_help"]/div[1]' | |||
| error_message = '//input[@id="login-password_password"]/../../../../../../following-sibling::div[2]' | |||
| user_error_message = '//input[@id="login-with-password_password"]/../../../../../../following-sibling::div[2]' | |||
| // http://unibee:[email protected]/ | |||
| openMerchantUrl = async function (driver, url = 'http://localhost/'){ | |||
| console.log("Open URL: " + url); | |||
| await baseStep.access_url(driver,url); | |||
| await baseStep.wait(driver, 3000); | |||
| let currentUrl = await driver.getCurrentUrl(); | |||
| console.log("currentUrl: " + currentUrl); | |||
| } | |||
| // http://unibee:[email protected]/ | |||
| openUserUrl = async function (driver, url = 'http://localhost:8086/plans'){ | |||
| console.log("Open URL: " + url); | |||
| await baseStep.access_url(driver,url); | |||
| await baseStep.wait(driver, 3000); | |||
| let currentUrl = await driver.getCurrentUrl(); | |||
| console.log("currentUrl: " + currentUrl); | |||
| } | |||
| loginMerchant = async function (driver, email='[email protected]', password ='changeme' ){ | |||
| console.log("Login with email: " + email); | |||
| await baseStep.waitUntilElement(driver, this.email,20000); | |||
| await baseStep.input(driver, this.email, email); | |||
| await baseStep.wait(driver, 1000); | |||
| await baseStep.input(driver, this.password, password); | |||
| await baseStep.wait(driver, 1000); | |||
| await baseStep.click(driver, this.submitBtn); | |||
| await baseStep.wait(driver, 1000); | |||
| } | |||
| loginUserPortal = async function (driver, email='[email protected]', password ='Aa@666666' ){ | |||
| console.log("Login with email: " + email); | |||
| await baseStep.waitUntilElement(driver, this.user_email,20000); | |||
| await baseStep.input(driver, this.user_email, email); | |||
| await baseStep.wait(driver, 2000); | |||
| await baseStep.input(driver, this.user_password, password); | |||
| await baseStep.wait(driver, 1000); | |||
| await baseStep.click(driver, this.submitBtn); | |||
| } | |||
| } | |||
| module.exports = new Login_Page(); |
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let merchantSubPage = require("../../PageObject/MerchantSubscriptionPage"); | |||
| let merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let merchantTransactionPage = require("../../PageObject/MerchantTransactionPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object(API_Env.get().BasicSet.url); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/01_Login/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('Cancel the subscription', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "username": "[email protected]", | |||
| "password":"q^GP8JxVx%b" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| }); | |||
| describe('Purchase plan=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - user purchase a plan => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, "http://unibee:[email protected]/"); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Premium'); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.wait(Driver, 10000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('TC002 - Check Subscription/Invoice/Transaction list in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, "http://unibee:[email protected]/"); | |||
| await baseStep.waitUntilElement(Driver,loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver, '[email protected]', 'q^GP8JxVx%b'); | |||
| await baseStep.waitUntilElement(Driver,merchantSubPage.menu_subscription,20000); | |||
| await merchantSubPage.checkRecordSubList(Driver, "Premium","UniBee Premium Plan","€20 /month","Active",""); | |||
| // await merchantSubPage.selectSubByPlanName(Driver, "Premium"); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver, "","€20 (tax: €0)","Paid","No"); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€20","Succeeded","Payment"); | |||
| await baseStep.wait(Driver, 10000000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/01_Login/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| describe('Login in Merchant Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Login failed with wrong password in Merchant Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login failed with wrong password => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, '123123'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| expect("Login Failed, Password Not Match").to.equal(await baseStep.getText(Driver,loginPage.error_message)); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Login failed with wrong email in Merchant Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login failed with wrong email => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, '123123'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| expect("Email Not Found").to.equal(await baseStep.getText(Driver,loginPage.error_message)); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Login failed with empty email and password in Merchant Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login failed with empty email and password => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, ''); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, ''); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| expect("Please input your Email!").to.equal(await baseStep.getText(Driver,loginPage.email_empty_error)); | |||
| expect("Please input valid email address.").to.equal(await baseStep.getText(Driver,loginPage.email_invalid_error)); | |||
| expect("Please input your password!").to.equal(await baseStep.getText(Driver,loginPage.password_empty_error)); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let billableMetricPage = require("../../PageObject/MerchantBillableMetricPage"); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/03_billable_metric/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| describe('Add billable metric in Merchant Portal, Aggregation Type = count=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - add billable metric ,Aggregation Type = count => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.menu_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.new_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,billableMetricPage.metric_name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_code, "code"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_description, "description"+new Date().getTime()); | |||
| await billableMetricPage.selectAggregationType(Driver, "count"); | |||
| await baseStep.click(Driver, billableMetricPage.save_btn); | |||
| await baseStep.screenShot(Driver,savaPath + '/03_info.jpeg'); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Add billable metric in Merchant Portal, Aggregation Type = count unique=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - add billable metric ,Aggregation Type = count unique => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.menu_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.new_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,billableMetricPage.metric_name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_code, "code"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_description, "description"+new Date().getTime()); | |||
| await billableMetricPage.selectAggregationType(Driver, "count unique"); | |||
| await baseStep.input(Driver, billableMetricPage.aggregation_property, "100"); | |||
| await baseStep.click(Driver, billableMetricPage.save_btn); | |||
| await baseStep.screenShot(Driver,savaPath + '/03_info.jpeg'); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Add billable metric in Merchant Portal, Aggregation Type = latest=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - add billable metric ,Aggregation Type = latest => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.menu_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.new_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,billableMetricPage.metric_name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_code, "code"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_description, "description"+new Date().getTime()); | |||
| await billableMetricPage.selectAggregationType(Driver, "latest"); | |||
| await baseStep.input(Driver, billableMetricPage.aggregation_property, "100"); | |||
| await baseStep.click(Driver, billableMetricPage.save_btn); | |||
| await baseStep.screenShot(Driver,savaPath + '/03_info.jpeg'); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Add billable metric in Merchant Portal, Aggregation Type = max=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - add billable metric ,Aggregation Type = max => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.menu_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.new_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,billableMetricPage.metric_name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_code, "code"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_description, "description"+new Date().getTime()); | |||
| await billableMetricPage.selectAggregationType(Driver, "max"); | |||
| await baseStep.input(Driver, billableMetricPage.aggregation_property, "100"); | |||
| await baseStep.click(Driver, billableMetricPage.save_btn); | |||
| await baseStep.screenShot(Driver,savaPath + '/03_info.jpeg'); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Add billable metric in Merchant Portal, Aggregation Type = sum=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - add billable metric ,Aggregation Type = sum => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.menu_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, billableMetricPage.new_billable_metric); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,billableMetricPage.metric_name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_code, "code"+new Date().getTime()); | |||
| await baseStep.input(Driver,billableMetricPage.metric_description, "description"+new Date().getTime()); | |||
| await billableMetricPage.selectAggregationType(Driver, "sum"); | |||
| await baseStep.input(Driver, billableMetricPage.aggregation_property, "100"); | |||
| await baseStep.click(Driver, billableMetricPage.save_btn); | |||
| await baseStep.screenShot(Driver,savaPath + '/03_info.jpeg'); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let discountCodePage = require("../../PageObject/MerchantDiscountCodePage"); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/04_discount_code/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| describe('Add discount code in Merchant Portal, one time use, percentage=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Add discount code in Merchant Portal, one time use, percentage => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.menu_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.new_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,discountCodePage.name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,discountCodePage.code, "code"+new Date().getTime()); | |||
| // await discountCodePage.inputPercentage(Driver, "20"); | |||
| await baseStep.input(Driver,discountCodePage.discountPercentage, "20"); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeStart, baseStep.getDateFormat(new Date(new Date().getTime()+3600*1000), "YYYY-MM-DD HH:mm:ss")); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeEnd, baseStep.getDateFormat(new Date(new Date().getTime()+3600*24*30*1000), "YYYY-MM-DD HH:mm:ss")) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.save_btn); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.waitUntilElement(Driver,discountCodePage.new_discount_code); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }) | |||
| describe('Add discount code in Merchant Portal, Recurring, percentage=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Add discount code in Merchant Portal,Recurring, percentage => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.menu_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.new_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,discountCodePage.name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,discountCodePage.code, "code"+new Date().getTime()); | |||
| await discountCodePage.selectBillingType(Driver, "Recurring") | |||
| // await discountCodePage.inputPercentage(Driver, "20"); | |||
| await baseStep.input(Driver,discountCodePage.discountPercentage, "20"); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeStart, baseStep.getDateFormat(new Date(new Date().getTime()+3600*1000), "YYYY-MM-DD HH:mm:ss")); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeEnd, baseStep.getDateFormat(new Date(new Date().getTime()+3600*24*30*1000), "YYYY-MM-DD HH:mm:ss")) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.save_btn); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.waitUntilElement(Driver,discountCodePage.new_discount_code); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Add discount code in Merchant Portal, one time use, fixed amount=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Add discount code in Merchant Portal, one time use, fixed amount => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.menu_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.new_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,discountCodePage.name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,discountCodePage.code, "code"+new Date().getTime()); | |||
| // await discountCodePage.inputPercentage(Driver, "20"); | |||
| await discountCodePage.selectDiscountType(Driver, "Fixed amount") | |||
| await baseStep.input(Driver,discountCodePage.discountAmount, "10"); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeStart, baseStep.getDateFormat(new Date(new Date().getTime()+3600*1000), "YYYY-MM-DD HH:mm:ss")); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeEnd, baseStep.getDateFormat(new Date(new Date().getTime()+3600*24*30*1000), "YYYY-MM-DD HH:mm:ss")) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.save_btn); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.waitUntilElement(Driver,discountCodePage.new_discount_code); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }) | |||
| describe('Add discount code in Merchant Portal, Recurring, fixed amount=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Add discount code in Merchant Portal, Recurring, fixed amount => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.menu_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.new_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,discountCodePage.name, "name"+new Date().getTime()); | |||
| await baseStep.input(Driver,discountCodePage.code, "code"+new Date().getTime()); | |||
| // await discountCodePage.inputPercentage(Driver, "20"); | |||
| await discountCodePage.selectBillingType(Driver, "Recurring") | |||
| await baseStep.wait(Driver, 1000); | |||
| await discountCodePage.selectDiscountType(Driver, "Fixed amount") | |||
| await baseStep.input(Driver,discountCodePage.discountAmount, "10"); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeStart, baseStep.getDateFormat(new Date(new Date().getTime()+3600*1000), "YYYY-MM-DD HH:mm:ss")); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeEnd, baseStep.getDateFormat(new Date(new Date().getTime()+3600*24*30*1000), "YYYY-MM-DD HH:mm:ss")) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.save_btn); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.waitUntilElement(Driver,discountCodePage.new_discount_code); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }) | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userInvoicePage = require("../../PageObject/UserInvoicePage"); | |||
| let merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait, click} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/05_Invoice/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: Invoice with Paid=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - purchase a plan with stripe in user portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check invoice in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver,"€24.4\n(tax: €4.4)","Invoice","Paid", "stripe", testUser); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.status)).to.equal("Paid"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.payment_gateway)).to.equal("stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Invoice with Processing and paid (wire transfer)=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - purchase a plan with wire transfer => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check invoice in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver,"€24.4\n(tax: €4.4)","Invoice","Processing", "Wire Transfer", testUser); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.status)).to.equal("Processing"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.payment_gateway)).to.equal("Wire Transfer"); | |||
| await baseStep.click(Driver, merchantInvoicePage.mark_as_paid_button); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver, merchantInvoicePage.transfer_number, "12345"); | |||
| await baseStep.input(Driver, merchantInvoicePage.reason, "test reason"); | |||
| await baseStep.click(Driver, merchantInvoicePage.mark_as_paid_confirm); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.status)).to.equal("Paid"); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver,"€24.4\n(tax: €4.4)","Invoice","Paid", "Wire Transfer", testUser); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS003: Invoice with cancelled=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - invoice with paid => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.click(Driver,userMySubPage.cancel_sub_button); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver,userMySubPage.cancel_confirm_button); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check invoice in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver,"€24.4\n(tax: €4.4)","Invoice","Cancelled", "Wire Transfer", testUser); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.status)).to.equal("Cancelled"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.payment_gateway)).to.equal("Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS004: refund with stripe=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - purchase a plan with stripe in user portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - refund in merchant => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_btn); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_reason, "refund reason"); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_amount, "1"); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_confirm); | |||
| await baseStep.wait(Driver, 10000); | |||
| await baseStep.refreshPage(Driver); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver, | |||
| "-€1","Credit Note","Refunded", "stripe", testUser); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS005: refund with wire transfer=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - purchase a plan with wire transfer => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check invoice in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver,"€24.4\n(tax: €4.4)","Invoice","Processing", "Wire Transfer", testUser); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.status)).to.equal("Processing"); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.payment_gateway)).to.equal("Wire Transfer"); | |||
| await baseStep.click(Driver, merchantInvoicePage.mark_as_paid_button); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver, merchantInvoicePage.transfer_number, "12345"); | |||
| await baseStep.input(Driver, merchantInvoicePage.reason, "test reason"); | |||
| await baseStep.click(Driver, merchantInvoicePage.mark_as_paid_confirm); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, merchantInvoicePage.status)).to.equal("Paid"); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver,"€24.4\n(tax: €4.4)","Invoice","Paid", "Wire Transfer", testUser); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 07 - refund in merchant => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_btn); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_reason, "refund reason"); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_amount, "1"); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_confirm); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.refreshPage(Driver); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver, | |||
| "-€1","Credit Note","Processing", "Wire Transfer", testUser); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_wire_transfer_confirm); | |||
| await baseStep.input(Driver,merchantInvoicePage.reason, "refunded"); | |||
| await baseStep.click(Driver, merchantInvoicePage.mark_as_refunded_confirm ); | |||
| await baseStep.wait(Driver, 2000); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver, | |||
| "-€1","Credit Note","Refunded", "Wire Transfer", testUser); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userInvoicePage = require("../../PageObject/UserInvoicePage") | |||
| let merchantTransactionPage = require("../../PageObject/MerchantTransactionPage") | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| const merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/06_Transaction/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: Transaction with Succeeded=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 -Transaction with Succeeded => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,200000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€24.4","Succeeded","Payment", "stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Transaction with Pending=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Transaction with pending => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€24.4","Pending","Payment", "Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS003: Transaction with Failed=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Transaction with failed => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.click(Driver,userMySubPage.cancel_sub_button); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver,userMySubPage.cancel_confirm_button); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€24.4","Failed","Payment", "Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS004: Transaction with refund => Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - purchase a plan with stripe in user portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - refund in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_btn); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_reason, "refund reason"); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_amount, "1"); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_confirm); | |||
| await baseStep.wait(Driver, 10000); | |||
| await baseStep.refreshPage(Driver); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver, | |||
| "-€1","Credit Note","Refunded", "stripe", testUser); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 07 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€1","Succeeded","Refund", "stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userInvoicePage = require("../../PageObject/UserInvoicePage") | |||
| let merchantTransactionPage = require("../../PageObject/MerchantTransactionPage") | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| const merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/07_Account_info/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: Transaction with Succeeded=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 -Transaction with Succeeded => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,200000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€24.4","Succeeded","Payment", "stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Transaction with Pending=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Transaction with pending => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€24.4","Pending","Payment", "Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS003: Transaction with Failed=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Transaction with failed => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.click(Driver,userMySubPage.cancel_sub_button); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver,userMySubPage.cancel_confirm_button); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€24.4","Failed","Payment", "Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS004: Transaction with refund => Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - purchase a plan with stripe in user portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 06 - refund in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantInvoicePage.menu_Invoice); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_btn); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_reason, "refund reason"); | |||
| await baseStep.input(Driver, merchantInvoicePage.refund_amount, "1"); | |||
| await baseStep.click(Driver, merchantInvoicePage.refund_confirm); | |||
| await baseStep.wait(Driver, 10000); | |||
| await baseStep.refreshPage(Driver); | |||
| await merchantInvoicePage.checkRecordInvoiceList(Driver, | |||
| "-€1","Credit Note","Refunded", "stripe", testUser); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('case 07 - check transaction in merchant portal => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, merchantTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await merchantTransactionPage.checkRecordTransactionList(Driver, "€1","Succeeded","Refund", "stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let planPage = require("../../PageObject/MerchantPlanPage"); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const discountCodePage = require("../../PageObject/MerchantDiscountCodePage"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/03_new_plan/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| describe('case01: create a new plan in Merchant Portal=> Success', function() { | |||
| this.timeout(900000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - create a new plan => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.menu_plan); | |||
| await baseStep.click(Driver, planPage.new_plan_btn); | |||
| await baseStep.input(Driver, planPage.plan_name, "Month Plan"); | |||
| await baseStep.input(Driver, planPage.plan_description, "Month Plan"); | |||
| await baseStep.input(Driver, planPage.price, "20"); | |||
| await baseStep.scrollIntoView(Driver, planPage.billable_metrics_label); | |||
| await baseStep.click(Driver, planPage.save_btn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.activate_btn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.back_btn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await planPage.selectPlan(Driver, "Month Plan"); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.publish_btn); | |||
| await baseStep.wait(Driver, 20000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('case02: create a one time payment on in Merchant Portal, => Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - create a new plan, currency = JPY => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await loginPage.loginMerchant(Driver) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, planPage.menu_plan); | |||
| await baseStep.click(Driver, planPage.new_plan_btn); | |||
| await baseStep.input(Driver, planPage.plan_name, "one time payment" ); | |||
| await baseStep.input(Driver, planPage.plan_description, "one time payment"); | |||
| // await planPage.selectCurrency(Driver,"JPY") | |||
| await baseStep.wait(Driver, 1000); // aria-activedescendant | |||
| await baseStep.input(Driver, planPage.price, "20"); | |||
| await planPage.inputIntervalCount(Driver, 1); | |||
| await planPage.selectPlanType(Driver, "One time payment") | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.scrollIntoView(Driver, planPage.save_btn); | |||
| await baseStep.click(Driver, planPage.save_btn); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_save.jpeg'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.activate_btn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.back_btn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await planPage.selectPlan(Driver, "one time payment"); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.click(Driver, planPage.publish_btn); | |||
| await baseStep.wait(Driver, 20000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Add discount code in Merchant Portal, one time use, percentage=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Add discount code in Merchant Portal, one time use, percentage => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openMerchantUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.email,20000); | |||
| await baseStep.input(Driver, loginPage.email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.password, 'changeme'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.menu_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.new_discount_code); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.input(Driver,discountCodePage.name, "dis0001"); | |||
| await baseStep.input(Driver,discountCodePage.code, "dis0001"); | |||
| await discountCodePage.selectDiscountType(Driver, "Fixed amount") | |||
| await baseStep.input(Driver,discountCodePage.discountAmount, "10"); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeStart, baseStep.getDateFormat(new Date(new Date().getTime()+3600*1000), "YYYY-MM-DD HH:mm:ss")); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.input(Driver,discountCodePage.validityRangeEnd, baseStep.getDateFormat(new Date(new Date().getTime()+3600*24*300*1000), "YYYY-MM-DD HH:mm:ss")) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.validityRangeOK); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, discountCodePage.save_btn); | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.waitUntilElement(Driver,discountCodePage.new_discount_code); | |||
| await baseStep.screenShot(Driver,savaPath + '/04_list.jpeg'); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }) | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/01_Login_user/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| describe('Login in User portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| // await loginPage.openUserUrl(Driver,"http://unibee:[email protected]/"); | |||
| await loginPage.openUserUrl(Driver); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await baseStep.input(Driver, loginPage.user_email, "[email protected]"); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.user_password, 'Aa@666666'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_login.jpeg'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.screenShot(Driver,savaPath + '/02_Menu.jpeg'); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Login failed with wrong password in user Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login failed with wrong password => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| // await loginPage.openUserUrl(Driver,"http://unibee:[email protected]/"); | |||
| await loginPage.openUserUrl(Driver); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await baseStep.input(Driver, loginPage.user_email, "[email protected]"); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.user_password, '123123'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| expect("Login Failed, Password Not Match").to.equal(await baseStep.getText(Driver,loginPage.user_error_message)); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Login failed with wrong email in User Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login failed with wrong email => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| // await loginPage.openUserUrl(Driver,"http://unibee:[email protected]/"); | |||
| await loginPage.openUserUrl(Driver); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await baseStep.input(Driver, loginPage.user_email, '[email protected]'); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.user_password, '123123'); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| expect("Email Not Found").to.equal(await baseStep.getText(Driver,loginPage.user_error_message)); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('Login failed with empty email and password in user Portal=> Success', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - Login failed with empty email and password => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| // await loginPage.openUserUrl(Driver,"http://unibee:[email protected]/"); | |||
| await loginPage.openUserUrl(Driver); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await baseStep.input(Driver, loginPage.user_email, ''); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver,loginPage.user_password, ''); | |||
| await baseStep.click(Driver, loginPage.submitBtn); | |||
| await baseStep.wait(Driver, 2000); | |||
| expect("Please input your Email!").to.equal(await baseStep.getText(Driver,loginPage.user_email_empty_error)); | |||
| expect("Please input valid email address.").to.equal(await baseStep.getText(Driver,loginPage.user_email_invalid_error)); | |||
| expect("Please input your password!").to.equal(await baseStep.getText(Driver,loginPage.user_password_empty_error)); | |||
| await baseStep.wait(Driver, 2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/02_User_plan/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('Cancel the subscription', function() { | |||
| this.timeout(100000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| }); | |||
| describe('TS001: Purchase plan with credit card=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - user purchase a plan => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,20000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Purchase plan with wire transfer and not finish=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - user purchase a plan => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS003: Purchase plan with wire transfer and finished=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - user purchase a plan => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_Yes_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Processing").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let merchantSubPage = require("../../PageObject/MerchantSubscriptionPage"); | |||
| let merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let merchantTransactionPage = require("../../PageObject/MerchantTransactionPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/03_one_time_payment/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('Purchase one time addon with credit card=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('TC001 - user purchase a plan => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, userPlanPage.menu_plan); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await baseStep.click(Driver, userPlanPage.one_time_addons_tab) | |||
| // no content | |||
| await userPlanPage.selectPlan(Driver, 'one time payment'); | |||
| await baseStep.click(Driver, userPlanPage.one_time_OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,20000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign) | |||
| await expect("Payment succeeded!").to.equal(actual_success_text) | |||
| await baseStep.wait(Driver,30000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userInvoicePage = require("../../PageObject/UserInvoicePage") | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| const merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/04_user_invoice/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: Invoice with Paid=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - invoice with paid => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,20000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userInvoicePage.menu_Invoice); | |||
| await userInvoicePage.checkRecordInvoiceList(Driver, "","€24.4 (tax: €4.4)","Paid"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.status)).to.equal("Paid"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, userInvoicePage.payment_gateway)).to.equal("stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS001: Invoice with Processing=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - invoice with paid => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver, userInvoicePage.menu_Invoice); | |||
| await userInvoicePage.checkRecordInvoiceList(Driver, "","€24.4 (tax: €4.4)","Processing"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.status)).to.equal("Processing"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, userInvoicePage.payment_gateway)).to.equal("Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS001: Invoice with cancelled=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - invoice with paid => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.click(Driver,userMySubPage.cancel_sub_button); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver,userMySubPage.cancel_confirm_button); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver, userInvoicePage.menu_Invoice); | |||
| await userInvoicePage.checkRecordInvoiceList(Driver, "","€24.4 (tax: €4.4)","Cancelled"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_id)).not.null; | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_name)).to.equal("SubscriptionCreate"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.invoice_amount)).to.equal("€24.4 (22% tax incl)"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.status)).to.equal("Cancelled"); | |||
| expect(await baseStep.getText(Driver, userInvoicePage.subscription_id)).not.null; | |||
| expect(await baseStep.getText(Driver, userInvoicePage.payment_gateway)).to.equal("Wire Transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userInvoicePage = require("../../PageObject/UserInvoicePage") | |||
| let userTransactionPage = require("../../PageObject/UserTransactionPage") | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| const merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/05_User_transaction/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: Transaction with Succeeded=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 -Transaction with Succeeded => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.bank_card, 20000); | |||
| await baseStep.click(Driver, userPlanPage.bank_card); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,5000); | |||
| await baseStep.switchWindow(Driver); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.change_card_btn,200000); | |||
| await baseStep.click(Driver, userPlanPage.change_card_btn); | |||
| await baseStep.input(Driver,userPlanPage.card_number, '4242424242424242'); | |||
| await baseStep.input(Driver,userPlanPage.card_expiry, '1234'); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.input(Driver,userPlanPage.card_cvc, '567'); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPlanPage.pay_btn); | |||
| await baseStep.waitUntilElement(Driver,userPlanPage.payment_success_sign,50000); | |||
| let actual_success_text = await baseStep.getText(Driver,userPlanPage.payment_success_sign); | |||
| await expect("Payment succeeded!").to.equal(actual_success_text); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await userTransactionPage.checkRecordTransactionList(Driver, "€24.4","Succeeded","Payment", "stripe"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Transaction with Pending=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Transaction with pending => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver, userTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await userTransactionPage.checkRecordTransactionList(Driver, "€24.4","Pending","Payment", "wire_transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Transaction with Failed=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Transaction with failed => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer); | |||
| await baseStep.click(Driver, userPlanPage.OK_btn); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver, userPlanPage.wire_transfer_no_finish); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver,userMySubPage.menu_my_subscription); | |||
| let actucl_status = await baseStep.getText(Driver,userMySubPage.sub_status); | |||
| expect("Pending").to.equal(actucl_status); | |||
| await baseStep.click(Driver,userMySubPage.cancel_sub_button); | |||
| await baseStep.wait(Driver,1000); | |||
| await baseStep.click(Driver,userMySubPage.cancel_confirm_button); | |||
| await baseStep.wait(Driver,2000); | |||
| await baseStep.click(Driver, userTransactionPage.menu_transaction); | |||
| await baseStep.wait(Driver,2000); | |||
| await userTransactionPage.checkRecordTransactionList(Driver, "€24.4","Failed","Payment", "wire_transfer"); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userMyAccount = require("../../PageObject/UserMyAccountPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userInvoicePage = require("../../PageObject/UserInvoicePage") | |||
| let userTransactionPage = require("../../PageObject/UserTransactionPage") | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| const merchantInvoicePage = require("../../PageObject/MerchantInvoicePage"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/06_User_my_account/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: Update account info=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('case 01 -update account info => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.click(Driver, userMyAccount.menu_my_account); | |||
| await baseStep.inputWithClear(Driver, userMyAccount.billing_address, "billing address" + new Date().getTime()); | |||
| await baseStep.inputWithClear(Driver, userMyAccount.company_name, "test company"); | |||
| await baseStep.scrollIntoView(Driver, userMyAccount.Save_btn); | |||
| await baseStep.click(Driver,userMyAccount.Save_btn); | |||
| await baseStep.wait(Driver, 10000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| let loginPage = require("../../PageObject/LoginPage"); | |||
| let userPlanPage = require("../../PageObject/UserPlanPage"); | |||
| let userMySubPage = require("../../PageObject/UserMySubPage"); | |||
| let userPreviewPage = require("../../PageObject/UserOrderPreviewPage"); | |||
| const urlencoded = require('urlencode'); | |||
| const webdriver = require('selenium-webdriver'); | |||
| const By = webdriver.By; | |||
| const driver = require('../../../CommonStep/Web/seleniumWebDriver'); | |||
| const baseStep = require('../../../CommonStep/Web/Web_Common_Step'); | |||
| const API_Object = require("../../../CommonStep/API/API_Object"); | |||
| const API_Env = require("../../../CommonStep/API/API_Env"); | |||
| const ApiReq = new API_Object("http://localhost:8088"); | |||
| const addContext = require('mochawesome/addContext'); | |||
| const {expect} = require("chai"); | |||
| const {wait} = require("../../../CommonStep/Web/Web_Common_Step"); | |||
| let request; | |||
| let response; | |||
| let timeStamp = new Date(); | |||
| let Driver; | |||
| let savaPath = __dirname + "/../../Report/Web/ScreenShot/07_payment_preview/" + baseStep.getDateFormat(new Date(),"YYYY-MM-DD_HH:mm:ss"); | |||
| let testData = []; | |||
| let testUser = "[email protected]"; | |||
| describe('TS001: purchase with a vat number=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - check order preview page with an vat number => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_preview.jpeg'); | |||
| await userPreviewPage.setCountry(Driver,"United Kingdom"); | |||
| await baseStep.wait(Driver, 2000); | |||
| await baseStep.input(Driver, userPreviewPage.vat_number, "GB288305674") | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.click(Driver, userPreviewPage.discount_code); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.vat_company_address)).to.equal("142 CROMWELL ROAD LONDON GREATER LONDON SW7 4EF GB"); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.vat_company_name)).to.equal("WEIO LTD"); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.vat_company_code)).to.equal("GB"); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS002: Check the different taxes under different countries=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - Check the different taxes under different countries => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_preview.jpeg'); | |||
| await baseStep.click(Driver, userPreviewPage.bank_card) | |||
| await baseStep.wait(Driver, 3000); | |||
| await userPreviewPage.setCountry(Driver,"Estonia"); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.tax)).to.equal("22 %"); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPreviewPage.wire_transfer); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.tax)).to.equal("22 %"); | |||
| await baseStep.wait(Driver,3000); | |||
| // United Arab Emirates | |||
| await baseStep.click(Driver, userPreviewPage.bank_card) | |||
| await baseStep.wait(Driver, 3000); | |||
| await userPreviewPage.setCountry(Driver,"United Arab Emirates"); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.tax)).to.equal("5 %"); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPreviewPage.wire_transfer); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.tax)).to.equal("5 %"); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPreviewPage.bank_card) | |||
| await baseStep.wait(Driver, 3000); | |||
| await userPreviewPage.setCountry(Driver,"United Kingdom"); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.tax)).to.equal("20 %"); | |||
| await baseStep.wait(Driver,3000); | |||
| await baseStep.click(Driver, userPreviewPage.wire_transfer); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.tax)).to.equal("20 %"); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
| describe('TS001: purchase with a discount code=> Success', function() { | |||
| this.timeout(9000000); | |||
| beforeEach(function () { | |||
| response = null; | |||
| addContext(this, { | |||
| title: 'StartTime', | |||
| value: { | |||
| StartTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| }); | |||
| afterEach(function () { | |||
| if (response) { | |||
| addContext(this, { | |||
| title: 'Request', | |||
| value: { | |||
| Request: request | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'Response', | |||
| value: { | |||
| Response: response | |||
| } | |||
| }); | |||
| addContext(this, { | |||
| title: 'EndTime', | |||
| value: { | |||
| EndTime: timeStamp = new Date() | |||
| } | |||
| }); | |||
| } | |||
| }); | |||
| it('Case 01: login => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.login(API_Env.get().headerSet,{ | |||
| "email": "[email protected]", | |||
| "password":"changeme" | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| testData["token"] = resBody.data.token; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 02: Get User List => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getUserList(API_Env.get().headerSet,urlencoded(testUser),(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| testData["id"] = resBody.data.userAccounts[0].id; | |||
| console.log("testData[\"id\"]", testData["id"]) | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 03: Get subscription => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| API_Env.get().headerSet.Authorization = "Bearer " + testData["token"]; | |||
| ApiReq.getSubscription(API_Env.get().headerSet, testData['id'],(res, url, header) => { | |||
| request = { | |||
| URL: url, | |||
| Headers: header | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody); | |||
| testData['subId'] = resBody.data.subscriptions[0].user.subscriptionId; | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('Case 04: cancel sub => Success', (done) => { | |||
| try { | |||
| setTimeout(() => {//Wait syncTimeAPI*1000 seconds | |||
| ApiReq.cancelSubscription(API_Env.get().headerSet,{ | |||
| "subscriptionId": testData['subId'] | |||
| },(res, url, header, bodyObject) => { | |||
| request = JSON.stringify(bodyObject); | |||
| request = { | |||
| URL: url, | |||
| Headers: header, | |||
| Body: JSON.parse(request) | |||
| }; | |||
| // response = res.body; | |||
| // Expect response headers:x-app,Content-Type | |||
| expect(res.statusCode).to.equal(200); | |||
| const resBody = JSON.parse(res.body); | |||
| response = resBody; | |||
| console.log(resBody) | |||
| // // token check | |||
| expect(resBody.code).to.equal(0); | |||
| done(); | |||
| }); | |||
| }, 1000); | |||
| } catch (e) { | |||
| done(e); | |||
| } | |||
| }); | |||
| it('case 05 - check order preview page with an vat number => Success ', (done) => { | |||
| (async () => { | |||
| try { | |||
| // login | |||
| Driver = driver.getDriver(webdriver, 'chrome'); | |||
| // Check Url | |||
| await loginPage.openUserUrl(Driver, ); | |||
| const currentUrl = await Driver.getCurrentUrl(); | |||
| console.log('当前网址:', currentUrl); | |||
| await baseStep.waitUntilElement(Driver, loginPage.user_email,20000); | |||
| await loginPage.loginUserPortal(Driver,testUser) | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.waitUntilElement(Driver, userPlanPage.plan_page_sign,20000); | |||
| await userPlanPage.selectPlan(Driver, 'Month Plan'); | |||
| await baseStep.wait(Driver, 1000); | |||
| await baseStep.screenShot(Driver,savaPath + '/01_preview.jpeg'); | |||
| await baseStep.input(Driver, userPreviewPage.discount_code, "dis0001") | |||
| await baseStep.wait(Driver, 3000); | |||
| await baseStep.click(Driver, userPreviewPage.discount_code_apply); | |||
| await baseStep.wait(Driver, 3000); | |||
| expect(await baseStep.getText(Driver, userPreviewPage.saved)).to.equal("€10"); | |||
| await baseStep.wait(Driver,3000); | |||
| done(); | |||
| } | |||
| catch (e) { | |||
| done(e); | |||
| }finally { | |||
| await Driver.quit(); | |||
| } | |||
| })(); | |||
| }); | |||
| it('Delay 5 seconds ', (done) => { | |||
| setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation | |||
| done(); | |||
| }, 5000); | |||
| }); | |||
| }); | |||
01_Web/TestData/testEnv.js
0 → 100644
CommonStep/API/API_Env.js
0 → 100644
CommonStep/API/API_Object.js
0 → 100644
| var HttpRequest = require("./API_Common_Step"); | |||
| var Env = require("./API_Env"); | |||
| var fs = require("fs"); | |||
| var path = require("path"); | |||
| var FormData = require('form-data'); | |||
| function API_Object(baseUrl) { | |||
| this.baseUrl = baseUrl || Env.get().BasicSet.url; | |||
| } | |||
| var proto = API_Object.prototype; | |||
| proto.login = function (header, body, cb) { | |||
| let url = `${this.baseUrl}/merchant/auth/sso/login`; | |||
| let bodyObject = { | |||
| "email": "[email protected]", | |||
| "password": "q^GP8JxVx%b" | |||
| } | |||
| for (let k in bodyObject) { | |||
| if (k in body) { | |||
| bodyObject[k] = body[k]; | |||
| } | |||
| } | |||
| HttpRequest.post(url, header, JSON.stringify(bodyObject), (err, res) => { | |||
| cb(err ? err : res, url, header, bodyObject) | |||
| }) | |||
| } | |||
| proto.getUserList = function (header, email, cb) { | |||
| let url = `${this.baseUrl}/merchant/user/list?email=${email}`; | |||
| HttpRequest.get(url, header, "", (err, res) => { | |||
| cb(err ? err : res, url, header) | |||
| }) | |||
| } | |||
| proto.getSubscription = function (header, userId, cb) { | |||
| let url = `${this.baseUrl}/merchant/subscription/list?userId=${userId}`; | |||
| HttpRequest.get(url, header, "", (err, res) => { | |||
| cb(err ? err : res, url, header) | |||
| }) | |||
| } | |||
| proto.cancelSubscription = function (header, body, cb) { | |||
| let url = `${this.baseUrl}/merchant/subscription/cancel`; | |||
| let bodyObject = { | |||
| "subscriptionId": "sub20240528u4EwLvwEFlhi3Ix", | |||
| "userId": "0" | |||
| } | |||
| for (let k in bodyObject) { | |||
| if (k in body) { | |||
| bodyObject[k] = body[k]; | |||
| } | |||
| } | |||
| HttpRequest.post(url, header, JSON.stringify(bodyObject), (err, res) => { | |||
| cb(err ? err : res, url, header, bodyObject) | |||
| }) | |||
| } | |||
| module.exports = API_Object; | |||
| \ No newline at end of file |
File added
File added
| { | |||
| "_args": [ | |||
| [ | |||
| "[email protected]", | |||
| "C:\\Users\\ts-shijia.a.yu\\IdeaProjects\\jpp-qa_automation_all_nodejs_new" | |||
| ] | |||
| ], | |||
| "_from": "[email protected]", | |||
| "_id": "[email protected]", | |||
| "_inBundle": false, | |||
| "_integrity": "sha512-dLtKIJW3y/PuFrPmcw6Mb8Nh+HwSqgVrK1rWgTARXhHfWvV822X2VRkx2meU/tg2+YQL6/nNgT6n5qWwIDHbwg==", | |||
| "_location": "/chromedriver", | |||
| "_phantomChildren": {}, | |||
| "_requested": { | |||
| "type": "version", | |||
| "registry": true, | |||
| "raw": "[email protected]", | |||
| "name": "chromedriver", | |||
| "escapedName": "chromedriver", | |||
| "rawSpec": "2.46.0", | |||
| "saveSpec": null, | |||
| "fetchSpec": "2.46.0" | |||
| }, | |||
| "_requiredBy": [ | |||
| "/" | |||
| ], | |||
| "_resolved": "https://registry.npmjs.org/chromedriver/-/chromedriver-2.46.0.tgz", | |||
| "_spec": "2.46.0", | |||
| "_where": "C:\\Users\\ts-shijia.a.yu\\IdeaProjects\\jpp-qa_automation_all_nodejs_new", | |||
| "author": { | |||
| "name": "Giovanni Bassi", | |||
| "email": "[email protected]", | |||
| "url": "http://www.lambda3.com.br" | |||
| }, | |||
| "bin": { | |||
| "chromedriver": "./bin/chromedriver" | |||
| }, | |||
| "bugs": { | |||
| "url": "https://github.com/giggio/node-chromedriver/issues" | |||
| }, | |||
| "dependencies": { | |||
| "del": "^3.0.0", | |||
| "extract-zip": "^1.6.7", | |||
| "mkdirp": "^0.5.1", | |||
| "request": "^2.88.0", | |||
| "tcp-port-used": "^1.0.1" | |||
| }, | |||
| "description": "ChromeDriver for Selenium", | |||
| "homepage": "https://github.com/giggio/node-chromedriver", | |||
| "keywords": [ | |||
| "chromedriver", | |||
| "selenium" | |||
| ], | |||
| "license": "Apache-2.0", | |||
| "main": "lib/chromedriver", | |||
| "name": "chromedriver", | |||
| "repository": { | |||
| "type": "git", | |||
| "url": "git://github.com/giggio/node-chromedriver.git" | |||
| }, | |||
| "scripts": { | |||
| "install": "node install.js" | |||
| }, | |||
| "version": "2.46.0" | |||
| } |
File added
| { | |||
| "name": "chromedriver", | |||
| "version": "125.0.3", | |||
| "keywords": [ | |||
| "chromedriver", | |||
| "selenium" | |||
| ], | |||
| "description": "ChromeDriver for Selenium", | |||
| "homepage": "https://github.com/giggio/node-chromedriver", | |||
| "repository": { | |||
| "type": "git", | |||
| "url": "git://github.com/giggio/node-chromedriver.git" | |||
| }, | |||
| "license": "Apache-2.0", | |||
| "author": { | |||
| "name": "Giovanni Bassi", | |||
| "email": "[email protected]", | |||
| "url": "http://www.lambda3.com.br" | |||
| }, | |||
| "main": "lib/chromedriver", | |||
| "bin": { | |||
| "chromedriver": "bin/chromedriver" | |||
| }, | |||
| "scripts": { | |||
| "install": "node install.js", | |||
| "update-chromedriver": "node update.js", | |||
| "typecheck": "tsc", | |||
| "test": "jest", | |||
| "test:ci": "jest --ci --reporters=default --reporters=jest-junit", | |||
| "lint": "eslint" | |||
| }, | |||
| "dependencies": { | |||
| "@testim/chrome-version": "^1.1.4", | |||
| "axios": "^1.6.7", | |||
| "compare-versions": "^6.1.0", | |||
| "extract-zip": "^2.0.1", | |||
| "proxy-agent": "^6.4.0", | |||
| "proxy-from-env": "^1.1.0", | |||
| "tcp-port-used": "^1.0.2" | |||
| }, | |||
| "devDependencies": { | |||
| "@types/jest": "^29.5.12", | |||
| "eslint": "^8.56.0", | |||
| "jest": "^29.7.0", | |||
| "jest-junit": "^16.0.0", | |||
| "semver": "^7.6.0", | |||
| "typescript": "^5.3.3" | |||
| }, | |||
| "engines": { | |||
| "node": ">=18" | |||
| } | |||
| } |
Please
register
or
sign in
to comment