Commit fa8da103 authored by YuShijiaCode's avatar YuShijiaCode

test files

parent dea5a40b
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();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class MerchantBillableMetricPage {
menu_billable_metric= '//*[@class="ant-menu-title-content" and text()="Billable Metric"]'
new_billable_metric = '//*[@class="ant-btn-icon"]/span[@aria-label="plus"]'
metric_name = '//*[@id="metricName"]'
metric_code = '//*[@id="code"]'
metric_description = '//*[@id="metricDescription"]'
aggregation_type = '//*[@id="aggregationType"]'
aggregation_property = '//*[@id="aggregationProperty"]'
save_btn = '//*[text()="Save"]'
selectAggregationType = async function (driver, type){
console.log("selectAggregationType: " , type);
let type_list = {
"count": "//div/div/div[2]/div/div/div/div/div",
"count unique": "//div[2]/div/div/div/div[2]/div",
"latest": "//div/div[3]/div",
"max":"//div/div/div[4]/div",
"sum": "//div[2]/div/div/div/div[5]/div"
}
await baseStep.input(driver,this.aggregation_type, type);
await baseStep.wait(driver, 1000)
await baseStep.click(driver, type_list[type]);
await baseStep.wait(driver, 1000)
}
checkRecordBillableMetric = async function(driver, name="", code="", description="", type="",aggregationType = "",aggregationProperty = "",record =1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-cell' and text()='Aggregation Type']", 20000);
await baseStep.wait(driver,10000);
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-1].findElements({ tagName: 'td' });
if (name !== ""){
expect(await cells[0].getText()).to.equal(name);
}
if (code!== ""){
expect(await cells[1].getText()).to.equal(code);
}
if (description !== ""){
expect(await cells[2].getText()).to.equal(description);
}
if (type !== ""){
expect(await cells[3].getText()).to.equal(type);
}
if (aggregationType !== ""){
expect(await cells[4].getText()).to.equal(aggregationType);
}
if (aggregationProperty !== ""){
expect(await cells[5].getText()).to.equal(aggregationProperty);
}
}
}
module.exports = new MerchantBillableMetricPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class MerchantDiscountCodePage {
menu_discount_code= '//*[@class="ant-menu-title-content" and text()="Discount Code"]'
new_discount_code = '//*[@class="ant-btn-icon"]/span[@aria-label="plus"]'
name = '//*[@id="name"]'
code = '//*[@id="code"]'
billingType = '//*[@id="billingType"]'
discountType = '//*[@id="discountType"]'
currency = '//*[@id="currency"]'
discountAmount = '//*[@id="discountAmount"]'
discountPercentage = '//*[@id="discountPercentage"]'
cycleLimit = '//*[@id="cycleLimit"]'
validityRangeStart = '//*[@id="validityRange"]'
validityRangeEnd = '//*[@placeholder="End date"]'
validityRangeOK= "//span[contains(.,'OK')]"
save_btn = '//*[text()="Save"]'
selectBillingType = async function (driver, type = "One time use"){
console.log("selectBillingType: " , type);
let type_list = {
"One time use": "//div[3]/div/div/div[2]/div/div/div/div/div",
"Recurring": "//div[2]/div/div/div/div[2]/div",
}
if(type !== "One time use"){
await baseStep.input(driver,this.billingType, type);
await baseStep.wait(driver, 1000)
await baseStep.click(driver, type_list[type]);
await baseStep.wait(driver, 1000)
}
}
selectDiscountType = async function (driver, type = "Percentage"){
console.log("selectDiscountType: " , type);
let type_list = {
"Percentage": "//div[3]/div/div/div[2]/div/div/div/div/div",
"Fixed amount": "//div[2]/div/div/div/div[2]/div",
}
let type_list_rec = {
"Percentage": "(//div[3]/div/div/div[2]/div/div/div/div/div)[2]",
"Fixed amount": "(//div[2]/div/div/div/div[2]/div)[2]",
}
if(type !== "Percentage") {
try {
await baseStep.input(driver, this.discountType, type);
await baseStep.wait(driver, 1000)
await baseStep.click(driver, type_list[type]);
await baseStep.wait(driver, 1000)
} catch {
await baseStep.click(driver, type_list_rec[type]);
await baseStep.wait(driver, 1000)
}
}
}
selectCurrency = async function (driver, currency = "EUR"){
console.log("selectCurrency: " , currency);
let currency_list = {
"EUR": "//div[3]/div/div/div[2]/div/div/div/div/div",
"USD": "//div[2]/div/div/div/div[2]/div",
"JPY": "//div/div[3]/div"
}
if (currency !== "EUR"){
await baseStep.input(driver,this.currency, currency);
await baseStep.wait(driver, 1000)
await baseStep.click(driver, currency_list[currency]);
await baseStep.wait(driver, 1000)
}
}
inputPercentage= async function (driver, percentage = 0){
console.log("inputPercentage: " , percentage);
let ele = await driver.findElement(By.xpath(this.discountPercentage));
await driver.executeScript("arguments[0].value = '"+percentage+"';", ele);
// await baseStep.input(driver,this.intervalCount, intervalCount);
await baseStep.wait(driver, 1000)
}
checkRecordDiscountCode= async function(driver, code="", name="", description="", type="",aggregationType = "",aggregationProperty = "",record =1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-cell' and text()='Aggregation Type']", 20000);
await baseStep.wait(driver,10000);
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-1].findElements({ tagName: 'td' });
if (code !== ""){
expect(await cells[0].getText()).to.equal(name);
}
if (name!== ""){
expect(await cells[1].getText()).to.equal(code);
}
if (description !== ""){
expect(await cells[2].getText()).to.equal(description);
}
if (type !== ""){
expect(await cells[3].getText()).to.equal(type);
}
if (aggregationType !== ""){
expect(await cells[4].getText()).to.equal(aggregationType);
}
if (aggregationProperty !== ""){
expect(await cells[5].getText()).to.equal(aggregationProperty);
}
}
}
module.exports = new MerchantDiscountCodePage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class MerchantInvoicePage {
menu_Invoice= '//*[@class="ant-menu-title-content" and text()="Invoice"]'
invoice_id = '//*[text()="Invoice Id"]/following-sibling::div[1]'
invoice_name = '//*[text()="Invoice Name"]/following-sibling::div[1]'
invoice_amount = '//*[text()="Invoice Amount"]/following-sibling::div[1]'
status = '(//*[text()="Status"]/following-sibling::div[1])[2]/span'
mark_as_paid_button = '(//*[text()="Status"]/following-sibling::div[1])[2]/button'
transfer_number = '//*[@id="TransferNumber"]'
reason = '//*[@id="reason"]'
mark_as_paid_confirm = '//*[@class="ant-modal-content"]//button[2]'
invoice_items = '//*[text()="Invoice Items"]/following-sibling::div[1]/button'
refund = '//*[text()="Refund"]/following-sibling::div[1]'
payment_type = '//*[text()="Payment type"]/following-sibling::div[1]'
discount_amount = '//*[text()="Discount Amount"]/following-sibling::div[1]'
subscription_id = '//*[text()="Subscription Id"]/following-sibling::div[1]'
payment_gateway = '//*[text()="Payment Gateway"]/following-sibling::div[1]'
user_name = '//*[text()="User Name"]/following-sibling::div[1]'
refund_btn = '//*[@aria-label="dollar"][1]'
refund_reason = '//*[text()="Refund Reason:"]/following-sibling::input'
refund_amount = '//*[text()="Refund Amt:"]/following-sibling::span/input'
refund_confirm = '//*[text()="Refund"]'
refund_wire_transfer_confirm = '//*[@aria-label="check-circle"]';
refund_comment = '//*[@id="reason"]'
mark_as_refunded_confirm = '//*[text()="Mark as Refunded"]'
checkRecordInvoiceList = async function(driver, totalAmount="", type = "", status="", Gateway = "", email = "",record = 1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-tbody']", 20000);
await baseStep.wait(driver,3000);
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 (totalAmount!== ""){
expect(await cells[1].getText()).to.equal(totalAmount);
}
if (type !== ""){
expect(await cells[2].getText()).to.equal(type);
}
if (status !== ""){
expect(await cells[3].getText()).to.equal(status);
}
if (Gateway !== ""){
expect(await cells[5].getText()).to.equal(Gateway);
}
if (email !== ""){
expect(await cells[8].getText()).to.equal(email);
}
await baseStep.click(driver, "//*[@id=\"root\"]/div/div/main/div/div/div/div[2]/div/div/div/div/div/div[2]/table/tbody/tr[2]/td[1]/button/span");
await baseStep.wait(driver,1000);
}
}
module.exports = new MerchantInvoicePage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
class MerchantPlanPage {
menu_plan= '//*[@class="ant-menu-title-content" and text()="Plan"]'
// new_plan_btn= '//*[@class="anticon anticon-plus"]/../following-sibling::span[text()="New plan"]'
new_plan_btn = '//*[@class="ant-btn-icon"]/span[@aria-label="plus"]'
plan_name_label= '//*[@for="planName"]'
plan_name= '//*[@id="planName"]'
plan_description_label= '//*[@for="description"]'
plan_description= '//*[@id="description"]'
status_label= '//*[@for="status"]'
status= '//*[@id="status"]'
is_published_label= '//*[@for="publishStatus"]'
is_published= '//*[text()="Publish"]'
currency_label= '//*[@for="currency"]'
currency = '//*[@id="currency"]'
price_label= '//*[@for="amount"]'
price= '//*[@id="amount"]'
intervalUnit_label = '//*[@for="intervalUnit"]'
intervalUnit = '//*[@id="intervalUnit"]'
intervalCount_label= '//*[@for="intervalCount"]'
intervalCount= '//*[@id="intervalCount"]'
plan_type_label = '//*[@for="type"]'
plan_type= '//*[@id="type"]'
add_ons_label = '//*[@for="addonIds"]'
add_ons = '//*[@id="addonIds"]'
onetimeAddonIds_label = '//*[@for="onetimeAddonIds"]'
onetimeAddonIds = '//*[@id="onetimeAddonIds"]'
allow_trial_label = '//*[@for="enableTrial"]'
allow_trial = '//*[@id="enableTrial"]'
trial_price_label = '//*[@for="trialAmount"]'
trial_price = '//*[@id="trialAmount"]'
trial_length_label = '//*[@for="trialDurationTime"]'
trial_length = '//*[@id="trialDurationTime"]'
trial_requires_bank_card_info_label = '//*[@for="trialDemand"]'
trial_requires_bank_card_info = '//*[@id="trialDemand"]'
auto_renew_after_trial_end_label = '//*[@for="cancelAtTrialEnd"]'
auto_renew_after_trial_end = '//*[@id="cancelAtTrialEnd"]'
billable_metrics_label = '//*[@title="Billable Metrics"]'
Custom_data_label = '//*[@for="metadata"]'
back_btn = '//*[text()="Go Back"]'
save_btn = '//*[text()="Save"]'
activate_btn = '//*[text()="Activate"]'
publish_btn = '//*[text()="Publish"]'
delete_btn = '//*[text()="Delete"]'
confirm_delete_btn = '//*[@class="ant-popconfirm-buttons"]/button'
plan_list_table = '//*[@class="ant-table-tbody"]'
selectCurrency = async function (driver, currency = "EUR"){
console.log("selectCurrency: " , currency);
let currency_list = {
"EUR": "//div[3]/div/div/div[2]/div/div/div/div/div",
"USD": "//div[2]/div/div/div/div[2]/div",
"JPY": "//div/div[3]/div"
}
if (currency !== "EUR"){
await baseStep.input(driver,this.currency, currency);
await baseStep.wait(driver, 1000)
await baseStep.click(driver, currency_list[currency]);
await baseStep.wait(driver, 1000)
}
}
inputIntervalCount = async function (driver, intervalCount = 1){
console.log("inputIntervalCount: " , intervalCount);
let ele = await driver.findElement(By.xpath(this.intervalCount));
await driver.executeScript("arguments[0].value = '"+intervalCount+"';", ele);
// await baseStep.input(driver,this.intervalCount, intervalCount);
await baseStep.wait(driver, 1000)
}
inputTrialPrice = async function (driver, price = 1){
console.log("inputTrialPrice: " , price);
let ele = await driver.findElement(By.xpath(this.trial_price));
await driver.executeScript("arguments[0].value = '"+price+"';", ele);
// await baseStep.input(driver,this.intervalCount, intervalCount);
await baseStep.wait(driver, 1000)
}
selectIntervalUnit = async function (driver, IntervalUnit = "month"){
console.log("selectIntervalUnit: " , IntervalUnit);
let IntervalUnit_list = {
"day": "//div[3]/div/div/div[2]/div/div/div/div/div",
"week": "//div[2]/div/div/div/div[2]/div",
"month": "//div/div[3]/div",
"year": "//div/div/div[4]/div"
}
if (IntervalUnit !== "month"){
await baseStep.input(driver,this.intervalUnit, IntervalUnit);
await baseStep.wait(driver, 1000)
await baseStep.click(driver, IntervalUnit_list[IntervalUnit]);
await baseStep.wait(driver, 1000)
}
}
selectPlanType = async function (driver, type = "Main type"){
console.log("selectPlanType: " , type);
let type_list = {
"Main type": "//div[3]/div/div/div[2]/div/div/div/div/div",
"Addon": "//div[2]/div/div/div/div[2]/div",
"One time payment": "//div/div[3]/div"
}
if (type !== "Main type"){
await baseStep.input(driver,this.plan_type, type);
await baseStep.wait(driver, 2000)
await baseStep.click(driver, type_list[type]);
await baseStep.wait(driver, 1000)
}
}
selectPlan= async function (driver, planName){
console.log("selectPlan: " , planName);
await baseStep.scrollIntoView(driver, "//*[text()='"+planName+"']");
await baseStep.click(driver, "//*[text()='"+planName+"']");
await baseStep.wait(driver,1000);
}
}
module.exports = new MerchantPlanPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
const {expect} = require("chai");
class MerchantSubscriptionPage {
menu_subscription= '//*[@class="ant-menu-title-content" and text()="Subscription"]'
first_name = '//span[text()="First Name"]/..//following-sibling::div[1]'
last_name = '//span[text()="Last Name"]/..//following-sibling::div[1]'
email = '//span[text()="Email"]/..//following-sibling::div[1]'
phone = '//span[text()="Phone"]/..//following-sibling::div[1]'
country = '//span[text()="Country"]/..//following-sibling::div[1]'
billing_address = '//span[text()="Billing Address"]/..//following-sibling::div[1]'
payment_method = '//span[text()="Payment Method"]/..//following-sibling::div[1]'
Vat_number = '//span[text()="VAT Number"]/..//following-sibling::div[1]'
subscription_tab = '//*[@data-node-key="Subscription"]'
account_tab = '//*[@data-node-key="Account"]'
Invoices_tab = '//*[@data-node-key="Invoices"]'
Payment_tab = '//*[@data-node-key="Payment"]'
sub_plan = '//*[text()="Plan"]/following-sibling::div[1]'
sub_plan_description = '//*[text()="Plan Description"]/following-sibling::div[1]'
sub_status = '//*[text()="Status"]/following-sibling::div[1]/span'
sub_subscription_id = '//*[text()="Subscription Id"]/following-sibling::div[1]'
sub_plan_price = '//*[text()="Plan Price"]/following-sibling::div[1]'
sub_addons_price = '//*[text()="Addons Price"]/following-sibling::div[1]'
sub_discount_amount = '//*[text()="Discount Amount"]/following-sibling::div[1]'
sub_total_amount = '//*[text()="Total Amount"]/following-sibling::div[1]'
sub_bill_period = '//*[text()="Bill Period"]/following-sibling::div[1]'
sub_next_due_date = '//*[text()="Next due date"]/following-sibling::div[1]//input'
sub_first_pay = '//*[text()="First Pay"]/following-sibling::div[1]'
sub_payment_gateway = '//*[text()="Payment Gateway"]/following-sibling::div[1]'
end_subscription = '//*[text()="End Subscription"]'
end_immediately = '//*[text()="immediately"]'
end_OK_btn = '(//*[@type = "button"]/span[text()="OK"])[2]'
checkRecordSubList = async function(driver, planName="", description="", amount="", status="", user= "", record = 1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-cell' and text()='Plan Name']", 20000);
await baseStep.wait(driver,10000);
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-1].findElements({ tagName: 'td' });
if (planName !== ""){
expect(await cells[0].getText()).to.equal(planName);
}
if (description!== ""){
expect(await cells[1].getText()).to.equal(description);
}
if (amount !== ""){
expect(await cells[2].getText()).to.equal(amount);
}
if (status !== ""){
expect(await cells[3].getText()).to.equal(status);
}
if (user !== ""){
expect(await cells[6].getText()).to.equal(user);
}
}
selectSubByPlanName = async function(driver, planName){
console.log("select sub by plan name: ", planName);
await baseStep.click(driver, "(//span[text()="+planName+"])[1]");
await baseStep.wait(driver, 1000);
}
}
module.exports = new MerchantSubscriptionPage();
\ No newline at end of file
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class MerchantTransactionPage {
menu_transaction= '//*[@class="ant-menu-title-content" and text()="Transaction"]'
checkRecordTransactionList = async function(driver, totalAmount="", status="", type= "",Gateway = "",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 (totalAmount!== ""){
// let amount = await cells[2].findElement({ tagName: 'div' })
// 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 cells[2].getText()).to.equal(totalAmount);
}
if (status !== ""){
expect(await cells[3].getText()).to.equal(status);
}
if (type !== ""){
expect(await cells[4].getText()).to.equal(type);
}
if (Gateway !== ""){
expect(await cells[5].getText()).to.equal(Gateway);
}
}
}
module.exports = new MerchantTransactionPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class MerchantUserAccountPage {
menu_user_list= '//*[@class="ant-menu-title-content" and text()="User List"]'
account_type_Individual = '//*[text()="Individual"]'
account_type_Business = '//*[text()="Business"]'
first_name = '//*[@id="firstName"]'
last_name = '//*[@id="lastName"]'
email = '//*[@id="email"]'
country = '//*[@id="countryCode"]'
city = '//*[@id="city"]'
zipCode = '//*[@id="zipCode"]'
billing_address = '//*[@id="address"]'
company_name = '//*[@id="companyName"]'
VATNumber = '//*[@id="vATNumber"]'
phone_number = '//*[@id="phone"]'
Save_btn = '//*[text()="Save"]'
}
module.exports = new MerchantUserAccountPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class MerchantUserListPage {
menu_user_list= '//*[@class="ant-menu-title-content" and text()="User List"]'
filter_first_name = '//*[@id="firstName"]'
filter_last_name = '//*[@id="lastName"]'
filter_email = '//*[@id="email"]'
clear_btn = '//*[text()="Clear"]'
search_btn = '//*[text()="Search"]'
add_new_btn = '//*[text()="Add New"]'
info_first_name = '//*[text()="First Name"]/../following-sibling::div[1]'
info_last_name = '//*[text()="Last Name"]/../following-sibling::div[1]'
info_email = '//*[text()="Email"]/../following-sibling::div[1]/a'
info_phone = '//*[text()="Phone"]/../following-sibling::div[1]'
info_country = '//*[text()="Country"]/../following-sibling::div[1]'
info_billing_address= '//*[text()="Billing Address"]/../following-sibling::div[1]'
info_payment_method = '//*[text()="Payment Method"]/../following-sibling::div[1]'
info_vat_number = '//*[text()="VAT Number"]/../following-sibling::div[1]'
account_tab = '//*[@data-node-key="AccountInfo"]'
subscription_tab = '//*[@data-node-key="Subscription"]'
invoice_tab = '//*[@data-node-key="Invoice"]'
transaction_tab = '//*[@data-node-key="Transaction"]'
checkRecordUserList = async function(driver, firstName="", lastName="", email="", status="",record = 1){
await baseStep.waitUntilElement(driver, "//*[@class='ant-table-cell' and text()='First Name']", 20000);
await baseStep.wait(driver,10000);
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-1].findElements({ tagName: 'td' });
if (firstName !== ""){
expect(await cells[0].getText()).to.equal(firstName);
}
if (lastName!== ""){
expect(await cells[1].getText()).to.equal(lastName);
}
if (email !== ""){
expect(await cells[2].getText()).to.equal(email);
}
if (status !== ""){
expect(await cells[7].getText()).to.equal(status);
}
}
}
module.exports = new MerchantUserListPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class UserInvoicePage {
menu_Invoice= '//*[@class="ant-menu-title-content" and text()="Invoice"]'
invoice_id = '//*[text()="Invoice Id"]/following-sibling::div[1]'
invoice_name = '//*[text()="Invoice Name"]/following-sibling::div[1]'
invoice_amount = '//*[text()="Invoice Amount"]/following-sibling::div[1]'
status = '//*[text()="Status"]/following-sibling::div[1]'
invoice_items = '//*[text()="Invoice Items"]/following-sibling::div[1]/button'
refund = '//*[text()="Refund"]/following-sibling::div[1]'
payment_type = '//*[text()="Payment type"]/following-sibling::div[1]'
discount_amount = '//*[text()="Discount Amount"]/following-sibling::div[1]'
subscription_id = '//*[text()="Subscription Id"]/following-sibling::div[1]'
payment_gateway = '//*[text()="Payment Gateway"]/following-sibling::div[1]'
user_name = '//*[text()="User Name"]/following-sibling::div[1]'
checkRecordInvoiceList = async function(driver, invoiceId = "", totalAmount="", 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-1].findElements({ tagName: 'td' });
if (invoiceId !== ""){
expect(await cells[0].getText()).to.equal(invoiceId);
}
if (totalAmount!== ""){
expect(await cells[1].getText()).to.equal(totalAmount);
}
if (status !== ""){
expect(await cells[2].getText()).to.equal(status);
}
await baseStep.click(driver, "//*[@class='ant-table-tbody']/tr[1]");
await baseStep.wait(driver,1000);
}
}
module.exports = new UserInvoicePage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class UserMyAccountPage {
menu_my_account= '//*[@class="ant-menu-title-content" and text()="My Account"]'
account_type_Individual = '//*[text()="Individual"]'
account_type_Business = '//*[text()="Business"]'
first_name = '//*[@id="firstName"]'
last_name = '//*[@id="lastName"]'
email = '//*[@id="email"]'
country = '//*[@id="countryCode"]'
city = '//*[@id="city"]'
zipCode = '//*[@id="zipCode"]'
billing_address = '//*[@id="address"]'
company_name = '//*[@id="companyName"]'
VATNumber = '//*[@id="vATNumber"]'
phone_number = '//*[@id="phone"]'
Save_btn = '//*[text()="Save"]'
}
module.exports = new UserMyAccountPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
class UserMySubPage {
menu_my_subscription= '//*[@class="ant-menu-title-content" and text()="My Subscription"]'
sub_status = '//*[text()="Status"]/following-sibling::div[1]/span'
cancel_sub_button = '//span[text()="CANCEL"]'
cancel_confirm_button = '//span[text()="Yes, Cancel it"]'
}
module.exports = new UserMySubPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
class UserOrderPreviewPage {
title_description= '//*[@class="ant-modal-body"]/div/div/div[1]/div[1]'
title_price= '//*[@class="ant-modal-body"]/div/div/div[1]/div[2]'
title_quantity= '//*[@class="ant-modal-body"]/div/div/div[1]/div[3]'
title_amount= '//*[@class="ant-modal-body"]/div/div/div[1]/div[4]'
content_description = '//*[@class="ant-modal-body"]/div/div/div[2]/div/div[1]'
content_price = '//*[@class="ant-modal-body"]/div/div/div[2]/div/div[2]'
content_quantity = '//*[@class="ant-modal-body"]/div/div/div[2]/div/div[3]'
content_amount = '//*[@class="ant-modal-body"]/div/div/div[2]/div/div[4]'
vat_number = '//*[@placeholder="Your VAT number"]'
vat_company_address = '//*[text()="Company Address"]/../following-sibling::div/span'
vat_company_name = '//*[text()="Company Name"]/../following-sibling::div/span'
vat_company_code = '//*[text()="Company Code"]/../following-sibling::div/span'
country = '//*[@type="search"]'
discount_code = '//*[text()="Discount code"]/../following-sibling::div/div/span/input'
discount_code_apply = '//*[text()="Discount code"]/../following-sibling::div/div/span[2]/button'
saved = '//*[text()="Saved"]/following-sibling::div'
tax = '//*[text()="Tax"]/following-sibling::div'
order_total = '//*[text()="Order Total"]/following-sibling::div'
bank_card = '//*[@for="payment-stripe"]'
wire_transfer = '//*[@for="payment-wire_transfer"]'
setCountry= async function (driver, countryName){
console.log("set country: " , countryName);
// await driver.executeScript(`document.getElementsByClassName("ant-select-selection-item").title = '${countryName}';`)
// await driver.executeScript(`document.getElementsByClassName("ant-select-selection-item").textContent = '${countryName}';`)
// let element = driver.findElement(By.className('ant-select-selection-item'));
//
// let js = `arguments[0].setAttribute("title", "${countryName}");`;
// await driver.executeScript(js, element);
// await driver.executeScript(`arguments[0].innerText = "${countryName}";`, element);
let xpath = '//div[3]/div/div/div[2]/div/div/div/div/div'
await baseStep.input(driver, this.country, countryName);
await baseStep.wait(driver, 1000);
await baseStep.click(driver, xpath);
}
}
module.exports = new UserOrderPreviewPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
class UserPlanPage {
menu_plan= '//*[@class="ant-menu-title-content" and text()="Plans"]'
plan_card = '//*[text()="Month Plan"]'
plan_page_sign = '//*[text()="One-time Addons"]'
one_time_addons_tab= '//*[text()="One-time Addons"]'
confirm_btn = '//*[text()="Buy"]'
one_time_confirm_btn = '(//*[text()="Buy"])[2]'
order_preview_title = '//*[text()="Order Preview"]'
bank_card = '//*[@for="payment-stripe"]'
wire_transfer = '//*[@for="payment-wire_transfer"]'
crypto_currency = '//*[@for="crypto-payment"]'
OK_btn = '//*[@class="confirm-btn-wrapper"]//span[text()="OK"]'
one_time_OK_btn = '//*[@class="modal-content-wrapper"]//span[text()="OK"]'
change_card_btn = '//*[@id="root"]/div/div/div[2]/main/div/div[2]/form/div[1]/div/div/div[2]/div/div/div[1]/div[2]/div[2]/div/div/div[2]/div/div[2]/button/div'
pay_btn = '//button/div[3]'
card_number = '//*[@id="cardNumber"]'
card_expiry = '//*[@id="cardExpiry"]'
card_cvc = '//*[@id="cardCvc"]'
billing_name = '//*[@id="billingName"]'
payment_success_sign = '//*[text()="Payment succeeded!"]'
wire_transfer_no_finish = '//button[contains(@class, "cancel")]'
wire_transfer_Yes_finish = '//button[contains(@class, "confirm")]'
selectPlan= async function (driver, planName){
console.log("selectPlan: " , planName);
await baseStep.scrollIntoView(driver, "//*[text()='"+planName+"']");
await baseStep.click(driver, "//*[text()='"+planName+"']");
await baseStep.wait(driver,1000);
try{
await baseStep.click(driver, this.confirm_btn);
}
catch(e){
await baseStep.click(driver, this.one_time_confirm_btn);
}
await baseStep.wait(driver,1000);
}
}
module.exports = new UserPlanPage();
const baseStep = require("../../CommonStep/Web/Web_Common_Step");
const webdriver = require('selenium-webdriver');
const {expect} = require("chai");
const By = webdriver.By;
class UserTransactionPage {
menu_transaction= '//*[@class="ant-menu-title-content" and text()="Transaction"]'
checkRecordTransactionList = async function(driver, totalAmount="", status="", type= "", gateway="" ,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-1].findElements({ tagName: 'td' });
if (totalAmount!== ""){
let amount= await cells[2].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 amount).to.equal(totalAmount);
}
if (status !== ""){
let actualStatus = await cells[3].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 actualStatus).to.equal(status);
}
if (type !== ""){
expect(await cells[4].getText()).to.equal(type);
}
if (gateway !== ""){
expect(await cells[6].getText()).to.equal(gateway);
}
}
}
module.exports = new UserTransactionPage();
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 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");
let request;
let response;
let timeStamp = new Date();
let Driver;
let savaPath = __dirname + "/../../Report/Web/ScreenShot/02_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.compareText(Driver, planPage.plan_name_label, "Plan Name");
await baseStep.input(Driver, planPage.plan_name, "AutomationTest" + new Date().getTime() );
await baseStep.compareText(Driver, planPage.plan_description_label, "Plan Description");
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
await baseStep.compareText(Driver, planPage.status_label, "Status");
await baseStep.compareText(Driver, planPage.is_published_label, "Is Published");
await baseStep.compareText(Driver, planPage.currency_label, "Currency");
await baseStep.compareText(Driver, planPage.price_label, "Price");
await baseStep.input(Driver, planPage.price, "20");
await baseStep.compareText(Driver, planPage.intervalUnit_label, "Interval Unit");
await baseStep.compareText(Driver, planPage.intervalCount_label, "Interval Count");
await baseStep.input(Driver, planPage.intervalCount, "1");
await baseStep.compareText(Driver, planPage.plan_type_label, "Plan Type");
await baseStep.compareText(Driver, planPage.add_ons_label, "Add-ons");
await baseStep.compareText(Driver, planPage.onetimeAddonIds_label, "One-time-payment add-on");
await baseStep.compareText(Driver, planPage.plan_type_label, "Plan Type");
await baseStep.scrollIntoView(Driver, planPage.billable_metrics_label);
await baseStep.compareText(Driver, planPage.allow_trial_label, "Allow Trial");
await baseStep.compareText(Driver, planPage.trial_price_label, "Trial Price");
await baseStep.compareText(Driver, planPage.trial_length_label, "Trial length");
await baseStep.compareText(Driver, planPage.trial_requires_bank_card_info_label, "Trial requires bank card info");
await baseStep.compareText(Driver, planPage.auto_renew_after_trial_end_label, "Auto renew after trial end");
await baseStep.compareText(Driver, planPage.billable_metrics_label, "Billable Metrics");
await baseStep.compareText(Driver, planPage.Custom_data_label, "Custom data (JSON string)");
await baseStep.click(Driver, planPage.save_btn);
await baseStep.wait(Driver, 2000);
await baseStep.click(Driver, planPage.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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('case02: create a new plan in Merchant Portal, currency = USD=> 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 = USD => 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, "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 + '/02_save.jpeg');
await baseStep.wait(Driver, 2000);
await baseStep.click(Driver, planPage.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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: create a new plan in Merchant Portal, currency = JPY=> 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, "AutomationTest" + new Date().getTime() );
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
await planPage.selectCurrency(Driver,"JPY")
await baseStep.wait(Driver, 1000); // aria-activedescendant
await baseStep.input(Driver, planPage.price, "20");
await planPage.inputIntervalCount(Driver, 2);
await baseStep.scrollIntoView(Driver, planPage.allow_trial);
await baseStep.click(Driver,planPage.allow_trial);
await baseStep.wait(Driver, 1000);
await baseStep.input(Driver,planPage.trial_length, "1");
await baseStep.click(Driver,planPage.trial_requires_bank_card_info);
await baseStep.wait(Driver, 1000);
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.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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('case04: create a new plan in Merchant Portal, Allow Trial = True billing info and auto renew = false => 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 => 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, "AutomationTest" + new Date().getTime() );
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
await planPage.selectCurrency(Driver,"EUR")
await baseStep.wait(Driver, 1000);
await baseStep.input(Driver, planPage.price, "20");
await planPage.inputIntervalCount(Driver, 2);
await baseStep.scrollIntoView(Driver, planPage.allow_trial);
await baseStep.click(Driver,planPage.allow_trial);
await baseStep.wait(Driver, 1000);
await baseStep.input(Driver,planPage.trial_length, "1");
await baseStep.click(Driver,planPage.auto_renew_after_trial_end);
await baseStep.wait(Driver, 1000);
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.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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('case05: create a new plan in Merchant Portal, Allow Trial = True billing info and auto renew = false, price>0=> 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, "AutomationTest" + new Date().getTime() );
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
await planPage.selectCurrency(Driver,"JPY")
await baseStep.wait(Driver, 1000); // aria-activedescendant
await baseStep.input(Driver, planPage.price, "20");
await planPage.inputIntervalCount(Driver, 2);
await baseStep.scrollIntoView(Driver, planPage.allow_trial);
await baseStep.click(Driver,planPage.allow_trial);
await baseStep.wait(Driver, 1000);
await planPage.inputTrialPrice(Driver,"20");
await baseStep.input(Driver,planPage.trial_length, "1");
await baseStep.click(Driver,planPage.trial_requires_bank_card_info);
await baseStep.wait(Driver, 1000);
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.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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('case05: create a add 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, "AutomationTestAddon" + new Date().getTime() );
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
// 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, "Addon")
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.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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('case06: 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, "AutomationTestAddon" + new Date().getTime() );
await baseStep.input(Driver, planPage.plan_description, "AutomationTest description");
// 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.delete_btn);
await baseStep.screenShot(Driver,savaPath + '/03_delete.jpeg');
await baseStep.wait(Driver, 1000);
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);
});
});
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);
});
});
var log4js = require('log4js');
var request = require('request');
var log = log4js.getLogger('API_Common_Step');
log.level = 'debug';
exports.get = function (url, headers, bodyObject, cb) {
call('GET', url, headers, bodyObject, cb);
};
exports.delete = function (url, headers, bodyObject, cb) {
call('DELETE', url, headers, bodyObject, cb);
}
exports.post = function (url, headers, bodyObject, cb) {
call('POST', url, headers, bodyObject, cb);
};
exports.put = function (url, headers, bodyObject, cb) {
call('PUT', url, headers, bodyObject, cb);
};
exports.post_Nobody = function (url, headers, cb) {
call('POST', url, headers, cb);
};
exports.patch = function (url, headers, bodyObject, cb) {
call('PATCH', url, headers, bodyObject, cb);
};
const iconv = require('iconv-lite');
const call = function (method, url, headers, body, cb) {
let options = {
url: url,
method: method,
headers: headers,
encoding:null
};
if (body) options.body = body;
console.log('=============API Request Information==================');
console.log(options);
request(options, function (error, response, resBodyText) {
if (!error) {
if(response.headers["content-type"] !== undefined && response.headers["content-type"].indexOf("charset=") !== -1) {
response.body = iconv.decode(response.body, response.headers["content-type"].split("charset=")[1]);
}else {
response.body = iconv.decode(response.body, "UTF-8")
}
log.error('response', response.statusCode, response.body);
cb(response);
return;
} else {
log.error('response', error);
cb(error);
return;
}
cb(null, response);
});
};
Env = {
test:{
BasicSet:{
url: "https://api.unibee.top"
},
headerSet: {
'Authorization': '',
'Content-Type': 'application/json'
}
}
}
exports.get = function () {
return Env["test"];
}
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
const expect = require('chai').expect;
const webdriver = require('selenium-webdriver');
const By = webdriver.By;
const Key = webdriver.Key;
const until = webdriver.until;
exports.access_url = async function (driver, url) {
console.log('Access url <' + url + '>');
//Access target url
driver.manage().window().maximize();
driver.get(url);
};
exports.inputInAlert = async function (driver, username, password) {
await console.log('Input <' + username + " "+ password + '>');
await driver.wait(until.alertIsPresent, 10000);
let alert = await driver.switchTo().alert();
await alert.sendKeys(username + Key.TAB + password);
}
exports.input = async function (driver, xpath, value) {
await console.log('Input <' + value + '>');
// clear element values
await driver.findElement(By.xpath(xpath)).sendKeys('');
// input new values into element
await driver.findElement(By.xpath(xpath)).sendKeys(value);
};
exports.inputWithClear = async function (driver, xpath, value) {
await console.log('Input <' + value + '>');
// clear element values
// await driver.findElement(By.xpath(xpath)).clear();
await driver.findElement(By.xpath(xpath)).sendKeys(Key.COMMAND, "a")
await driver.findElement(By.xpath(xpath)).sendKeys(Key.DELETE)
// input new values into element
await driver.findElement(By.xpath(xpath)).sendKeys(value);
};
exports.inputPicture = async function (driver, xpath, value) {
await console.log('Input <' + value + '>');
// input new values into element
await driver.findElement(By.xpath(xpath)).sendKeys(value);
};
var fs = require('fs');
exports.click = async function (driver, xpath) {
console.log('Click <' + xpath + '>');
await driver.findElement(By.xpath(xpath)).click();
await this.wait(driver,1000)
};
getText = async function (driver, xpath) {
let text = await driver.findElement(By.xpath(xpath)).getText();
console.log('Text <' + text + '>');
return text;
};
exports.getText = getText;
exports.compareText = async function (driver, xpath, expectText) {
let actualText = await getText(driver, xpath);
console.log("Actual Text: " + actualText);
console.log("Expect Text: " + expectText);
await expect(actualText).to.equal(expectText);
};
getTitle = async function (driver) {
let title = await driver.getTitle();
await console.log('Title <' + title + '>');
return title;
};
exports.getTitle = getTitle;
exports.compareTitle = async function (driver, expectTitle) {
let actualTitle = await getTitle(driver);
console.log("Actual Title: " + actualTitle);
console.log("Expect Title: " + expectTitle);
await expect(actualTitle).to.equal(expectTitle);
};
let path = require('path');
function mkdirsSync(dirname) {
if (fs.existsSync(dirname)) {
return true;
} else {
if (mkdirsSync(path.dirname(dirname))) {
fs.mkdirSync(dirname);
return true;
}
}
}
const date = require('moment');
getDateFormat = function (time, format) {
let dateFormat;
if (date(time, "YYYYMMDD HH:mm:ss").isValid()) {
dateFormat = date(time).format(format);
} else {
console.error('The ' + time + ' is not a date format.')
expect(true).to.equal(false);
}
return dateFormat;
};
exports.getDateFormat = getDateFormat;
exports.screenShot = async function (driver, path=__dirname) {
let targetPath = path.split("/");
console.log('targetPath: ' + targetPath);
let dirPath = path.substring(0, path.indexOf(targetPath[targetPath.length - 1]));
console.log('dirPath: ' + dirPath);
if (mkdirsSync(dirPath) === true) {
await driver.takeScreenshot().then(
function (image) {
fs.writeFile(path, image, 'base64', function (err) {
if (err !== null) {
console.log(err);
}
});
}
)
}
};
wait = async function (driver, time) {
await console.log('Wait <' + time / 1000 + '> seconds');
await driver.sleep(time);
};
exports.wait = wait;
exports.waitUntilTitle = async function (driver, title, time = 10000) {
await driver.wait(until.titleIs(title), time);
await console.log('Wait Title <' + title + '>');
};
exports.scrollIntoView = async function (driver, targetXpath){
console.log("scrollIntoView target path: " + targetXpath);
target = await driver.findElement(By.xpath(targetXpath));
await driver.executeScript("arguments[0].scrollIntoView();", target)
await wait(driver, 1000);
};
exports.scrollUp = async function (driver, targetXpath){
console.log("scrollUp target path: " + targetXpath);
target = await driver.findElement(By.xpath(targetXpath));
await driver.executeScript("arguments[0].scrollIntoView();", target)
await wait(driver, 1000);
};
exports.waitUntilElement = async function (driver, targetXpath, time = 10000) {
await driver.wait(until.elementLocated(By.xpath(targetXpath)), time);
await console.log('Wait Element <' + targetXpath + '>');
};
exports.switchWindow = async function (driver, index = null) {
let windowHandles = await driver.getAllWindowHandles();
console.log("windowHandles: "+ windowHandles)
if (index == null) {
await driver.switchTo().window(windowHandles.pop());
await wait(driver, 1000);
}else{
await driver.switchTo().window(windowHandles[index]);
await wait(driver, 1000);
}
}
exports.refreshPage = async function(driver){
console.log("refresh page!");
await driver.navigate().refresh();
}
\ No newline at end of file
let log4js = require('log4js');
const chrome = require("selenium-webdriver/chrome");
const {By} = require("selenium-webdriver");
const chromedriver = require("./Driver/chromeDiver_1");
let log = log4js.getLogger('jppSeleniumWebdriver');
log.level = 'debug';
//For browser : chrome ,
exports.getDriver = function (webdriver, browser) {
let driver;
switch (browser) {
case 'chrome':
let chrome = require('selenium-webdriver/chrome');
let chromedriver = require('./Driver/chromedriver');
// let chromedriver = require('chromedriver');
// if(chrome.getDefaultService().isRunning()){
// chrome.getDefaultService().kill();
// }
// chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build());
// capabilities.setPageLoadStrategy('eager');
let service = new chrome.ServiceBuilder(chromedriver.path);
var chromeCapabilities = webdriver.Capabilities.chrome();
chromeCapabilities.set('acceptInsecureCerts', false);
driver = new webdriver.Builder()
.forBrowser('chrome')
// .withCapabilities(webdriver.Capabilities.chrome())
.withCapabilities(chromeCapabilities)
.setChromeService(service)
// Not use headless
.setChromeOptions(new chrome.Options().addArguments('--no-sandbox',"excludeSwitches=['enable-automation']"))
// Use headless
// .setChromeOptions(new chrome.Options().addArguments("--headless",'--ignore-certificate-errors','window-size=1920,1080','--no-sandbox'))
.build();
break;
case 'firefox':
''
let firefox = require('selenium-webdriver/firefox');
let firefoxdriver = require('geckodriver');
console.log(firefoxdriver.path);
driver = new webdriver.Builder()
.forBrowser('firefox')
.withCapabilities(webdriver.Capabilities.firefox())
.build()
break;
case 'ie':
let ie = require('selenium-webdriver/ie');
let iedriver = require('iedriver');
driver = new webdriver.Builder()
.forBrowser('internet explorer')
.withCapabilities(webdriver.Capabilities.ie())
.build()
break;
case 'edge':
let edge = require('selenium-webdriver/edge');
let edgedriver = require('edgedriver');
driver = new webdriver.Builder()
.forBrowser('edge')
.withCapabilities(webdriver.Capabilities.edge())
.build()
break;
default :
}
return driver;
};
exports.getBy = function () {
return By;
};
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