test files
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); | ||
| }); | ||
| }); | ||
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 |
Please
register
or
sign in
to comment