Commit b5f38369 authored by Joshua Yu's avatar Joshua Yu

Merge branch 'main' into 'master'

add cases for product See merge request !21
parents 06af5d4c b9927b88
...@@ -48,6 +48,16 @@ class MerchantPlanPage { ...@@ -48,6 +48,16 @@ class MerchantPlanPage {
confirm_delete_btn = '//*[@class="ant-popconfirm-buttons"]/button' confirm_delete_btn = '//*[@class="ant-popconfirm-buttons"]/button'
plan_list_table = '//*[@class="ant-table-tbody"]' plan_list_table = '//*[@class="ant-table-tbody"]'
new_product_btn = '(//*[@class="ant-tabs-nav-add"]/span[@aria-label="plus"])[1]'
product_name = '//*[@id="productName"]'
product_description = '//*[@id="description"]'
product_detail_OK = '//*[text()="OK"]'
product_delete_OK = '//*[text()="OK"]'
product_edit_OK = '//*[text()="OK"]'
product_edit_btn = '(//*[@aria-label=\'edit\'])[1]'
selectCurrency = async function (driver, currency = "EUR"){ selectCurrency = async function (driver, currency = "EUR"){
console.log("selectCurrency: " , currency); console.log("selectCurrency: " , currency);
let currency_list = { let currency_list = {
...@@ -141,6 +151,29 @@ class MerchantPlanPage { ...@@ -141,6 +151,29 @@ class MerchantPlanPage {
await baseStep.wait(driver, 1000); await baseStep.wait(driver, 1000);
} }
selectProduct = async function (driver, name){
console.log("select product: " + name);
await baseStep.click(driver, "//*[text()='"+name+"']");
await baseStep.wait(driver, 1000);
}
deleteProduct = async function (driver, name){
console.log("delete product: " + name);
await baseStep.click(driver, "//*[text()='"+name+"']/following-sibling::button");
await baseStep.wait(driver, 1000);
}
clickNewPlanBtn = async function(driver){
let btns = await driver.findElements(By.xpath(this.new_plan_btn));
for(let btn of btns){
console.log("-------", btn);
if (await btn.isDisplayed()){
await btn.click();
break;
}
}
}
} }
module.exports = new MerchantPlanPage(); module.exports = new MerchantPlanPage();
...@@ -39,7 +39,9 @@ class MerchantUserListPage { ...@@ -39,7 +39,9 @@ class MerchantUserListPage {
current_plan = "//*[text()='Plan']/following-sibling::div[1]" current_plan = "//*[text()='Plan']/following-sibling::div[1]"
current_plan_des = "(//*[text()='Plan Description'])[1]/following-sibling::div[1]" current_plan_des = "(//*[text()='Plan Description'])[1]/following-sibling::div[1]"
current_status= "(//*[text()='Status'])[3]//following-sibling::div[1]/span" current_status= "(//*[text()='Status'])[3]//following-sibling::div[1]/span"
plan_name = '(//*[text()="Plan"]/following-sibling::div[1])'
sub_status = '(//*[text()="Status"]/following-sibling::div[1]/span[1])'
plan_search_list = '//*[text()="Assign subscription"]/../following-sibling::div//input[@type="search"]/..'
...@@ -82,6 +84,46 @@ class MerchantUserListPage { ...@@ -82,6 +84,46 @@ class MerchantUserListPage {
await baseStep.wait(driver, 1000); await baseStep.wait(driver, 1000);
} }
selectProduct = async function (driver, name){
console.log("select product: " + name);
await baseStep.click(driver, "//*[text()='"+name+"']");
await baseStep.wait(driver, 1000);
}
checkRecordHistoryList = async function(driver, product="", plan="", status= "" ,record = 1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-tbody']", 20000);
await baseStep.wait(driver,5000);
let table = await driver.findElement(By.xpath("//*[@class='ant-table-tbody']"));
let rows = await table.findElements({ tagName: 'tr' })
console.log("rows.length: ",rows.length)
let cells = await rows[record].findElements({ tagName: 'td' });
if (product!== ""){
let actual_product= await cells[0].getText()
expect(await actual_product).to.equal(product);
}
if (plan !== ""){
let actual_plan = await cells[1].getText()
expect(await actual_plan).to.equal(plan);
}
if (status !== ""){
let actual_status= await cells[4].getText()
expect(actual_status).to.equal(status);
}
}
clickAssignBtn = async function(driver){
let btns = await driver.findElements(By.xpath(this.assign_sub_btn));
for(let btn of btns){
console.log("-------", btn);
if (await btn.isDisplayed()){
await btn.click();
break;
}
}
}
} }
......
const baseStep = require("../../CommonStep/Web/Web_Common_Step"); const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver'); const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By; const By = webdriver.By;
class UserMySubPage { class UserMySubPage {
menu_my_subscription= '//*[@class="ant-menu-title-content" and text()="My Subscription"]' menu_my_subscription= '//*[@class="ant-menu-title-content" and text()="My Subscription"]'
sub_status = '//*[text()="Status"]/following-sibling::div[1]/span' plan_name = '(//*[text()="Plan"]/following-sibling::div[1])'
sub_status = '(//*[text()="Status"]/following-sibling::div[1]/span[1])'
cancel_sub_button = '//span[text()="CANCEL"]' cancel_sub_button = '//span[text()="CANCEL"]'
cancel_confirm_button = '//span[text()="Yes, Cancel it"]' cancel_confirm_button = '//span[text()="Yes, Cancel it"]'
go_to_choose_one = '//*[text()="Go to choose one"]'
selectProduct = async function (driver, name){
console.log("select product: " + name);
await baseStep.click(driver, "//*[text()='"+name+"']");
await baseStep.wait(driver, 1000);
}
checkRecordHistoryList = async function(driver, product="", plan="", status= "" ,record = 1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-tbody']", 20000);
await baseStep.wait(driver,5000);
let table = await driver.findElement(By.xpath("//*[@class='ant-table-tbody']"));
let rows = await table.findElements({ tagName: 'tr' })
console.log("rows.length: ",rows.length)
//*[@id="root"]/div/div/main/div/div/div[1]/div/div/div/div/div[2]/table/tbody/tr[2]/td[3]/div/span
let cells = await rows[record].findElements({ tagName: 'td' });
if (product!== ""){
let actual_product= await cells[0].getText()
// let amount = await driver.findElement(By.xpath("//*[@id=\"root\"]/div/div/main/div/div/div[1]/div/div/div/div/div[2]/table/tbody/tr["+(record+1)+"]/td[3]/div/span"))
expect(await actual_product).to.equal(product);
}
if (plan !== ""){
let actual_plan = await cells[1].getText()
// let actualStatus = await driver.findElement(By.xpath("//*[@id=\"root\"]/div/div/main/div/div/div[1]/div/div/div/div/div[2]/table/tbody/tr["+(record+1)+"]/td[4]/span"))
expect(await actual_plan).to.equal(plan);
}
if (status !== ""){
let actual_status= await cells[4].getText()
expect(actual_status).to.equal(status);
}
}
isProductSelected = async function(driver, productName){
let element = await driver.findElement(By.xpath("//*[text()='"+productName+"']"));
return await element.getAttribute('aria-selected');
}
} }
module.exports = new UserMySubPage(); module.exports = new UserMySubPage();
...@@ -43,6 +43,11 @@ class UserPlanPage { ...@@ -43,6 +43,11 @@ class UserPlanPage {
} }
selectProduct = async function (driver, name){
console.log("select product: " + name);
await baseStep.click(driver, "//*[text()='"+name+"']");
await baseStep.wait(driver, 1000);
}
......
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 API_Env = require("../../../CommonStep/API/API_Env");
const urlencoded = require("urlencode");
const userPlanPage = require("../../PageObject/UserPlanPage");
const userListPage = require("../../PageObject/MerchantUserListPage");
const userSubPage = require("../../PageObject/UserMySubPage");
let request;
let response;
let timeStamp = new Date();
let Driver;
let savaPath = __dirname + "/../../Report/Web/ScreenShot/10_product/" + baseStep.getDateFormat(new Date(), "YYYY-MM-DD_HH:mm:ss");
let testUser = "[email protected]";
describe('case01: create a new product=> 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 product => 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.wait(Driver, 1000);
await baseStep.waitUntilElement(Driver, planPage.new_product_btn);
await baseStep.click(Driver, planPage.new_product_btn);
await baseStep.wait(Driver, 1000);
await baseStep.input(Driver, planPage.product_name, "AutoProductName");
await baseStep.input(Driver, planPage.product_description, "AutoProductDescription");
await baseStep.click(Driver, planPage.product_detail_OK);
await baseStep.screenShot(Driver, savaPath + '/02_New_Product.jpeg');
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('case02: create a new plan under product=> 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 product => 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.click(Driver, planPage.menu_plan);
await baseStep.wait(Driver, 1000);
await planPage.selectProduct(Driver, "AutoProductName");
await planPage.clickNewPlanBtn(Driver);
await baseStep.input(Driver, planPage.plan_name, "AutomationTest" + new Date().getTime());
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
await planPage.selectCurrency(Driver, "USD")
await baseStep.wait(Driver, 1000); // aria-activedescendant
await baseStep.input(Driver, planPage.price, "20");
// await baseStep.input(Driver, planPage.intervalCount, "1");
await planPage.inputIntervalCount(Driver, 2);
await baseStep.scrollIntoView(Driver, planPage.billable_metrics_label);
await baseStep.click(Driver, planPage.save_btn);
await baseStep.screenShot(Driver, savaPath + '/03_save.jpeg');
await baseStep.wait(Driver, 2000);
await baseStep.click(Driver, planPage.delete_btn);
await baseStep.click(Driver, planPage.confirm_delete_btn);
await baseStep.wait(Driver, 1000);
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('case03: edit product=> 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 - edit product => 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.click(Driver, planPage.menu_plan);
await baseStep.wait(Driver, 1000);
await baseStep.waitUntilElement(Driver, planPage.new_product_btn);
await planPage.selectProduct(Driver, "AutoProductName");
await baseStep.click(Driver, planPage.product_edit_btn);
await baseStep.wait(Driver, 1000);
await baseStep.inputWithClear(Driver, planPage.product_name, "AutoUpdate");
await baseStep.inputWithClear(Driver, planPage.product_description, "AutoUpdate");
await baseStep.click(Driver, planPage.product_detail_OK);
await baseStep.screenShot(Driver, savaPath + '/04_Edit_Product.jpeg');
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('case04: delete product=> 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 - delete product => 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.click(Driver, planPage.menu_plan);
await baseStep.wait(Driver, 1000);
await baseStep.waitUntilElement(Driver, planPage.new_product_btn);
await baseStep.wait(Driver, 1000);
await planPage.deleteProduct(Driver, "AutoUpdate");
await baseStep.screenShot(Driver, savaPath + '/05_Delete_Product.jpeg');
await baseStep.click(Driver, planPage.product_delete_OK);
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('case05: Check user list in merchant portal=> 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: 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 02: 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);
for (let i = 0; i< 3; i++){
testData['subId_'+i] = resBody.data.subscriptions[i].subscription.subscriptionId;
}
done();
});
}, 1000);
} catch (e) {
done(e);
}
});
for (let i =0; i< 3; i++){
it('Case 03: cancel sub => Success', (done) => {
try {
setTimeout(() => {//Wait syncTimeAPI*1000 seconds
ApiReq.cancelSubscription(API_Env.get().headerSet, {
"subscriptionId": testData['subId_' + i]
}, (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 04 - 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.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.screenShot(Driver, savaPath + "/06_Plan_Under_Default.jpeg");
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.screenShot(Driver, savaPath + "/07_PayWithCreditCard.jpeg");
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 baseStep.screenShot(Driver, savaPath + "/08_PaySuccess.jpeg");
await expect("Payment succeeded!").to.equal(actual_success_text);
await baseStep.wait(Driver, 5000);
await baseStep.click(Driver, userPlanPage.menu_plan);
await baseStep.wait(Driver, 1000);
await userPlanPage.selectProduct(Driver, "Automation Product");
await userPlanPage.selectPlan(Driver, 'Auto Plan');
await baseStep.click(Driver, userPlanPage.bank_card);
await baseStep.screenShot(Driver, savaPath + "/09_Plan_Under_another_tab.jpeg");
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.screenShot(Driver, savaPath + "/10_PayWithCreditCard.jpeg");
await baseStep.wait(Driver, 3000);
await baseStep.click(Driver, userPlanPage.pay_btn);
await baseStep.waitUntilElement(Driver, userPlanPage.payment_success_sign, 20000);
actual_success_text = await baseStep.getText(Driver, userPlanPage.payment_success_sign);
await baseStep.screenShot(Driver, savaPath + "/11_PaySuccess.jpeg");
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 05 - Check sub detail and history ', (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.wait(Driver, 1000);
await baseStep.waitUntilElement(Driver, userListPage.menu_user_list);
await baseStep.click(Driver, userListPage.menu_user_list);
await baseStep.wait(Driver, 1000);
await baseStep.input(Driver, userListPage.filter_email, testUser);
await baseStep.click(Driver, userListPage.search_btn);
await userListPage.checkRecordUserList(Driver)
await baseStep.click(Driver, userListPage.subscription_tab);
await baseStep.wait(Driver, 1000);
await userListPage.selectProduct(Driver, "Default");
await baseStep.screenShot(Driver, savaPath + "/12_plan_detail_default.jpeg");
await expect("Month Plan").to.equal(await baseStep.getText(Driver, userListPage.plan_name + '[1]'));
await expect("Active").to.equal(await baseStep.getText(Driver, userListPage.sub_status+ '[1]'));
await baseStep.wait(Driver, 2000);
await userListPage.selectProduct(Driver, "Automation Product");
await baseStep.screenShot(Driver, savaPath + "/13_plan_detail_auto.jpeg");
await expect("Auto Plan").to.equal(await baseStep.getText(Driver, userListPage.plan_name + '[2]'));
await expect("Active").to.equal(await baseStep.getText(Driver, userListPage.sub_status+ '[2]'));
await baseStep.wait(Driver, 3000);
await userListPage.checkRecordHistoryList(Driver, "Automation Product", "Auto Plan", "Processing");
await userListPage.checkRecordHistoryList(Driver, "Default", "Month Plan", "Processing", 2);
await baseStep.screenShot(Driver, savaPath + "/14_history_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('case06: Assign a plan to user under a product in merchant portal=> 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 - Assign a plan to user ', (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.wait(Driver, 1000);
await baseStep.waitUntilElement(Driver, userListPage.menu_user_list);
await baseStep.click(Driver, userListPage.menu_user_list);
await baseStep.wait(Driver, 1000);
await baseStep.input(Driver, userListPage.filter_email, testUser);
await baseStep.click(Driver, userListPage.search_btn);
await userListPage.checkRecordUserList(Driver)
await baseStep.click(Driver, userListPage.subscription_tab);
await baseStep.wait(Driver, 1000);
await userListPage.selectProduct(Driver, "Link Product");
await baseStep.screenShot(Driver, savaPath + "/15_empty_page.jpeg");
await userListPage.clickAssignBtn(Driver);
await baseStep.wait(Driver, 2000);
await baseStep.click(Driver, userListPage.plan_search_list);
await baseStep.screenShot(Driver, savaPath + "/16_plan_list_under_product.jpeg");
await baseStep.wait(Driver, 1000);
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('Cancel all subs=> 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: 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 02: 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);
for (let i = 0; i< 3; i++){
testData['subId_'+i] = resBody.data.subscriptions[i].subscription.subscriptionId;
}
done();
});
}, 1000);
} catch (e) {
done(e);
}
});
for (let i =0; i< 3; i++){
it('Case 03: cancel sub => Success', (done) => {
try {
setTimeout(() => {//Wait syncTimeAPI*1000 seconds
ApiReq.cancelSubscription(API_Env.get().headerSet, {
"subscriptionId": testData['subId_' + i]
}, (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('Delay 5 seconds ', (done) => {
setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation
done();
}, 5000);
});
});
...@@ -14,7 +14,6 @@ const ApiReq = new API_Object("https://api.unibee.top"); ...@@ -14,7 +14,6 @@ const ApiReq = new API_Object("https://api.unibee.top");
const addContext = require('mochawesome/addContext'); const addContext = require('mochawesome/addContext');
const {expect} = require("chai"); const {expect} = require("chai");
const {wait} = require("../../../CommonStep/Web/Web_Common_Step");
let request; let request;
let response; let response;
let timeStamp = new Date(); let timeStamp = new Date();
......
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 API_Object = require("../../../CommonStep/API/API_Object");
const API_Env = require("../../../CommonStep/API/API_Env");
const ApiReq = new API_Object("https://api.unibee.top");
const urlencoded = require("urlencode");
const userPlanPage = require("../../PageObject/UserPlanPage");
const userSubPage = require("../../PageObject/UserMySubPage");
let request;
let response;
let timeStamp = new Date();
let Driver;
let savaPath = __dirname + "/../../Report/Web/ScreenShot/08_product/" + baseStep.getDateFormat(new Date(), "YYYY-MM-DD_HH:mm:ss");
testData = [];
let testUser = "[email protected]";
describe('case01: Purchase multiple plans=> 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: 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 02: 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);
for (let i = 0; i< 3; i++){
testData['subId_'+i] = resBody.data.subscriptions[i].subscription.subscriptionId;
}
done();
});
}, 1000);
} catch (e) {
done(e);
}
});
for (let i =0; i< 3; i++){
it('Case 03: cancel sub => Success', (done) => {
try {
setTimeout(() => {//Wait syncTimeAPI*1000 seconds
ApiReq.cancelSubscription(API_Env.get().headerSet, {
"subscriptionId": testData['subId_' + i]
}, (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 04 - 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.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.screenShot(Driver, savaPath + "/01_Plan_Under_Default.jpeg");
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.screenShot(Driver, savaPath + "/02_PayWithCreditCard.jpeg");
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 baseStep.screenShot(Driver, savaPath + "/03_PaySuccess.jpeg");
await expect("Payment succeeded!").to.equal(actual_success_text);
await baseStep.wait(Driver, 5000);
await baseStep.click(Driver, userPlanPage.menu_plan);
await baseStep.wait(Driver, 1000);
await userPlanPage.selectProduct(Driver, "Automation Product");
await userPlanPage.selectPlan(Driver, 'Auto Plan');
await baseStep.click(Driver, userPlanPage.bank_card);
await baseStep.screenShot(Driver, savaPath + "/04_Plan_Under_another_tab.jpeg");
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.screenShot(Driver, savaPath + "/05_PayWithCreditCard.jpeg");
await baseStep.wait(Driver, 3000);
await baseStep.click(Driver, userPlanPage.pay_btn);
await baseStep.waitUntilElement(Driver, userPlanPage.payment_success_sign, 20000);
actual_success_text = await baseStep.getText(Driver, userPlanPage.payment_success_sign);
await baseStep.screenShot(Driver, savaPath + "/06_PaySuccess.jpeg");
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('case02: Check subscription=> 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 - check subscription list => 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, userSubPage.menu_my_subscription);
await baseStep.wait(Driver, 3000);
await userSubPage.selectProduct(Driver, "Default");
await baseStep.screenShot(Driver, savaPath + "/07_plan_detail_default.jpeg");
await expect("Month Plan").to.equal(await baseStep.getText(Driver, userSubPage.plan_name + '[1]'));
await expect("Active").to.equal(await baseStep.getText(Driver, userSubPage.sub_status+ '[1]'));
await baseStep.wait(Driver, 2000);
await userSubPage.selectProduct(Driver, "Automation Product");
await baseStep.screenShot(Driver, savaPath + "/08_plan_detail_auto.jpeg");
await expect("Auto Plan").to.equal(await baseStep.getText(Driver, userSubPage.plan_name + '[2]'));
await expect("Active").to.equal(await baseStep.getText(Driver, userSubPage.sub_status+ '[2]'));
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('case03: Check history list=> 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 - check subscription list => 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, userSubPage.menu_my_subscription);
await baseStep.click(Driver, userPlanPage.menu_plan);
await baseStep.click(Driver, userSubPage.menu_my_subscription);
await baseStep.wait(Driver, 3000);
await userSubPage.selectProduct(Driver, "Default");
await baseStep.wait(Driver, 2000);
await userSubPage.checkRecordHistoryList(Driver, "Automation Product", "Auto Plan", "Processing");
await userSubPage.checkRecordHistoryList(Driver, "Default", "Month Plan", "Processing", 2);
await baseStep.screenShot(Driver, savaPath + "/09_history_list.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('case04: Click link to jump to the corresponding product=> 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 - check subscription list => 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, userSubPage.menu_my_subscription);
await baseStep.click(Driver, userPlanPage.menu_plan);
await baseStep.click(Driver, userSubPage.menu_my_subscription);
await baseStep.wait(Driver, 3000);
await userSubPage.selectProduct(Driver, "Link Product");
await baseStep.wait(Driver, 2000);
await baseStep.screenShot(Driver, savaPath + "/10_Link.jpeg");
await baseStep.wait(Driver, 1000);
await baseStep.click(Driver, userSubPage.go_to_choose_one);
await baseStep.wait(Driver, 2000);
await baseStep.screenShot(Driver, savaPath + "/11_Link_product.jpeg");
expect("true").to.equal(await userSubPage.isProductSelected(Driver, "Link Product"));
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('Cancel all subs=> 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: 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 02: 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);
for (let i = 0; i< 3; i++){
testData['subId_'+i] = resBody.data.subscriptions[i].subscription.subscriptionId;
}
done();
});
}, 1000);
} catch (e) {
done(e);
}
});
for (let i =0; i< 3; i++){
it('Case 03: cancel sub => Success', (done) => {
try {
setTimeout(() => {//Wait syncTimeAPI*1000 seconds
ApiReq.cancelSubscription(API_Env.get().headerSet, {
"subscriptionId": testData['subId_' + i]
}, (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('Delay 5 seconds ', (done) => {
setTimeout(() => {// TODO Need wait about syncTimeAPI second after last operation
done();
}, 5000);
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment