-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Description
Hello all,
I try to create API base test function. Like this
import { OnboardingApiObjects } from '@constants/api/Digital_Securities/OnboardingApiObjects'
import { expect } from '@playwright/test'
import { APIRequestContext } from 'playwright'
export class DigitalSecuritiesApi {
readonly request: APIRequestContext
constructor (request) {
this.request = request
}
OnboardingApiObjects = new OnboardingApiObjects()
async newOnboardingCompany (apiUrl: any, onboardingURL: any): Promise<string> {
const _response = await this.request.post(
`${apiUrl}${onboardingURL}/companies`,
{
data: {
name: OnboardingApiObjects.companyName,
incorporation_date: OnboardingApiObjects.incorporationDate,
registration_number: OnboardingApiObjects.registrationNumber,
legal_entity_type: OnboardingApiObjects.legalEntityType,
place_of_incorporation: OnboardingApiObjects.placeOfIncorporation,
business_activity_description: OnboardingApiObjects.businessActivityDescription,
source_of_funds: OnboardingApiObjects.sourceOfFunds,
annual_operating_income: OnboardingApiObjects.annualOperatingIncome,
phone: OnboardingApiObjects.phone,
website: OnboardingApiObjects.website,
myinfo: OnboardingApiObjects.myinfo,
address: {
address_line_1: OnboardingApiObjects.addressLine1,
address_line_2: OnboardingApiObjects.addressLine2,
city: OnboardingApiObjects.city,
country_code: OnboardingApiObjects.countryCode,
postal_code: OnboardingApiObjects.postalCode
}
}
}
)
// Assertions
expect(_response.status()).toBe(200)
expect(_response.ok()).toBeTruthy()
// Check response parameters
const res = await _response.json()
expect(res).toHaveProperty('id')
return res.id
}
async newOnboardingIndividual (apiUrl: any, onboardingURL: any): Promise<string> {
const _response = await this.request.post(
`${apiUrl}${onboardingURL}/individuals`,
{
data: {
title: OnboardingApiObjects.title,
first_name: OnboardingApiObjects.firstname,
last_name: OnboardingApiObjects.lastname,
identification_number: OnboardingApiObjects.identificationNumber,
date_of_birth: OnboardingApiObjects.dateOfBirth,
gender: OnboardingApiObjects.gender,
nationality: OnboardingApiObjects.nationality,
phone: OnboardingApiObjects.phone,
mobile: OnboardingApiObjects.mobile,
email: OnboardingApiObjects.email,
annual_income: OnboardingApiObjects.annualIncome,
liquid_assets: OnboardingApiObjects.liquidAssets,
net_worth: OnboardingApiObjects.netWorth,
myinfo: OnboardingApiObjects.myinfo,
accredited: OnboardingApiObjects.accredited,
identification_document_type: OnboardingApiObjects.identificationDocumentType,
country_code_in_identification_document: OnboardingApiObjects.countryCodeInIdentificationDocument,
address: {
address_line_1: OnboardingApiObjects.addressLine1,
address_line_2: OnboardingApiObjects.addressLine2,
city: OnboardingApiObjects.city,
country_code: OnboardingApiObjects.countryCode,
postal_code: OnboardingApiObjects.postalCode
}
}
}
)
// Assertions
// Assertions
expect(_response.status()).toBe(200)
expect(_response.ok()).toBeTruthy()
// Check response parameters
const res = await _response.json()
expect(res).toHaveProperty('id')
return res.id
}
async newCustomer (apiUrl: any, customersURL: any, companyId: any): Promise<string> {
const _response = await this.request.post(
`${apiUrl}${customersURL}`,
{
data: [
{
onboarding_id: companyId,
custody_agreement_acknowledgement: true,
properties: {
testing: 'Automation testing',
Deletable: 'Yes'
}
}
]
}
)
// Assertions
expect(_response.status()).toBe(200)
expect(_response.ok()).toBeTruthy()
// Check response parameters
const res = await _response.json()
expect(res[0]).toHaveProperty('customer_id')
expect(res[0]).toHaveProperty('onboarding_id', companyId)
expect(res[0].properties).toHaveProperty('testing', 'Automation testing')
expect(res[0].properties).toHaveProperty('Deletable', 'Yes')
return res[0].customer_id
}
}
And also add these functions into the baseTest
import { DigitalSecuritiesApi } from '@apis/DigitalSecuritiesApi'
import { MidOfficerPage } from '@pages/MidOfficerPage'
import { SignInPage } from '@pages/SignInPage'
import { test as baseTest } from '@playwright/test'
const test = baseTest.extend<{
signInPage: SignInPage;
midOfficerPage: MidOfficerPage;
digitalSecuritiesApi: DigitalSecuritiesApi;
}>({
signInPage: async ({ page }, use) => {
await use(new SignInPage(page))
},
midOfficerPage: async ({ page }, use) => {
await use(new MidOfficerPage(page))
},
digitalSecuritiesApi: async ({ request }, use) => {
await use(new DigitalSecuritiesApi(request))
}
})
export default test
After that I call this functions BeforeAll.
import { testConfig } from '@config/envConfig'
import { OnboardingApiObjects } from '@constants/api/Digital_Securities/OnboardingApiObjects'
import test from '@lib/TestBase'
import { expect } from '@playwright/test'
// ENV variables
const apiUrl = testConfig.apiUrl
const onboardingURL = testConfig.onboardingApiUrl
let companyId : string
let linkedCompanyId : string
let linkedIndividualId : string
test.describe('Update Company Functional Tests @func @onboarding', () => {
test.beforeAll(async ({ digitalSecuritiesApi }) => {
companyId = await digitalSecuritiesApi.newOnboardingCompany(apiUrl, onboardingURL)
linkedCompanyId = await digitalSecuritiesApi.newOnboardingCompany(apiUrl, onboardingURL)
linkedIndividualId = await digitalSecuritiesApi.newOnboardingIndividual(apiUrl, onboardingURL)
})
test('Update Company - Valid JSON', async ({ request }) => {
// Send request
const _response = await request.put(
`${apiUrl}${onboardingURL}/companies/${companyId}`,
{
data: {
linked_companies: [
{
company_id: linkedCompanyId,
name: OnboardingApiObjects.name,
description: OnboardingApiObjects.description
}
],
linked_individuals: [
{
individual_id: linkedIndividualId,
name: OnboardingApiObjects.name,
role: 'director'
}
]
}
})
// Assertions
expect(_response.status()).toBe(200)
expect(_response.ok()).toBeTruthy()
})
The problem is these 2 lines returns same id, it seems when I call the same function return the same response. Doesnt create new one.
companyId = await digitalSecuritiesApi.newOnboardingCompany(apiUrl, onboardingURL)
linkedIndividualId = await digitalSecuritiesApi.newOnboardingIndividual(apiUrl, onboardingURL)`
How can I handle this issue?
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels