diff --git a/apps/mobility-bap/components/bottomModalRenderer/bottomModalRenderer.tsx b/apps/mobility-bap/components/bottomModalRenderer/bottomModalRenderer.tsx
index 7aecffd61..7fb81ab58 100644
--- a/apps/mobility-bap/components/bottomModalRenderer/bottomModalRenderer.tsx
+++ b/apps/mobility-bap/components/bottomModalRenderer/bottomModalRenderer.tsx
@@ -99,6 +99,7 @@ const BottomModalRenderer = (props: BottomModalRendererProps) => {
return (
diff --git a/cypress/e2e/mobility-bap/homePage.cy.ts b/cypress/e2e/mobility-bap/homePage.cy.ts
new file mode 100644
index 000000000..cd9822841
--- /dev/null
+++ b/cypress/e2e/mobility-bap/homePage.cy.ts
@@ -0,0 +1,88 @@
+import { testIds } from '../../../shared/dataTestIds'
+
+describe('Home Page Tests', () => {
+ before(() => {
+ cy.visit(`${testIds.url_base}${testIds.url_home}`)
+ cy.setGeolocation('getAddress', { latitude: 18.6087413, longitude: 73.75189209999999 }, 'mobility-bap/address.json')
+ cy.wait('@getAddress')
+ })
+
+ it('should render homepage with google map', () => {
+ cy.getByData(testIds.mobility_map_container).should('be.visible')
+ cy.getByData(testIds.mobility_map).should('be.visible')
+ })
+
+ it('should render the pickup-dropoff modal', () => {
+ cy.getByData(testIds.mobility_pickup_dropoff).should('be.visible')
+ cy.getByData(testIds.mobility_pickup_dropoff).should('contain.text', 'Where Would You Like To Go?')
+ cy.getByData(testIds.mobility_pickup_label).should('contain.text', 'Pickup')
+ cy.getByData(testIds.mobility_dropoff_label).should('contain.text', 'Dropoff')
+ })
+
+ it('should contain pickup address on load', () => {
+ cy.getByData(testIds.mobility_pickup_label).should('contain.text', 'Pickup')
+ cy.getByData(testIds.mobility_pickup_address).should('contain.text', 'Decathlon Sports Wakad')
+ })
+
+ it('should contain empty dropoff address on load', () => {
+ cy.getByData(testIds.mobility_dropoff_label).should('contain.text', 'Dropoff')
+ cy.getByData(testIds.mobility_dropoff_address).should('contain.text', '')
+ })
+
+ it('The search button should render as disabled on initial load', () => {
+ cy.getByData(testIds.mobility_search_btn).should('be.disabled')
+ })
+
+ it('should render the geolocation search component onclick of dropoff field', () => {
+ cy.getByData(testIds.mobility_dropoff_address).click()
+ cy.getByData(testIds.loaction_list).should('be.visible')
+ })
+
+ it('should render the location list on input change', () => {
+ cy.getByData(testIds.loaction_list).should('be.visible')
+ cy.getByData(testIds.loaction_list).type('Maharashtra Cricket Association Stadium')
+ cy.getByData(testIds.location_list_item).should('be.visible')
+ })
+
+ it('should update the dropoff address on select', () => {
+ cy.getByData(testIds.location_list_item).should('be.visible').eq(0).click()
+ cy.getByData(testIds.mobility_dropoff_address).should('contain.text', 'Maharashtra Cricket Association Stadium')
+ })
+
+ it('search button should be enabled when both drop-off and pickup addresses are set', () => {
+ cy.getByData(testIds.mobility_search_btn).should('not.be.disabled')
+ })
+
+ it('should check for violation for drop-off and pickup when search button click', () => {
+ cy.performCheckViolation(
+ {
+ policyCheckResult: [
+ {
+ location: '18.6744633,73.7065161',
+ violation: false,
+ violatedPolicies: [
+ {
+ id: '6b298',
+ name: 'Quarantine Policy'
+ }
+ ]
+ }
+ ]
+ },
+ 'checkViolation'
+ )
+ cy.getByData(testIds.mobility_search_btn).click()
+ cy.getByData(testIds.mobility_cancel_search).should('be.visible')
+ cy.getByData(testIds.mobility_cancel_search).should('contain.text', 'Cancel Search')
+ })
+
+ it('should cancel the search when the user clicks the cancel button', () => {
+ cy.getByData(testIds.mobility_cancel_search).click()
+ cy.getByData(testIds.mobility_search_btn).should('not.be.disabled')
+ cy.getByData(testIds.mobility_cancel_search).should('not.exist')
+ })
+
+ it('should render the toast when the user cancels the search', () => {
+ cy.getByData(testIds.feedback).should('contain.text', 'Cab search request canceled.')
+ })
+})
diff --git a/cypress/fixtures/mobility-bap/address.json b/cypress/fixtures/mobility-bap/address.json
new file mode 100644
index 000000000..a197d1c9c
--- /dev/null
+++ b/cypress/fixtures/mobility-bap/address.json
@@ -0,0 +1,16 @@
+{
+ "ok": true,
+ "status": 200,
+ "results": [
+ {
+ "address_components": [
+ {
+ "long_name": "India",
+ "short_name": "IN",
+ "types": ["country", "political"]
+ }
+ ],
+ "formatted_address": "Decathlon Sports Wakad, Tathawade Road, Tathawade, Pimpri-Chinchwad, Maharashtra, India"
+ }
+ ]
+}
diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts
index 4ba86aafd..e6ab977a1 100644
--- a/cypress/support/commands.ts
+++ b/cypress/support/commands.ts
@@ -52,7 +52,7 @@ declare global {
interface Chainable {
getByData(dataTestAttribute: string): Chainable>
login(baseUrl: string, email: string, password: string): Chainable
- setGeolocation(aliasName: string): Chainable
+ setGeolocation(aliasName: string, location: { latitude: number; longitude: number }, data?: any): Chainable
performSearch(searchTerm: string, response: RouteHandler): Chainable
mockReduxState(type: string, data: Record): Chainable
selectProduct(index: number): Chainable
@@ -78,6 +78,7 @@ declare global {
fillConsentDetails(): Chainable
fillAssemblyDetails(): Chainable
performXinput_Submit(response: RouteHandler, aliasName: string): Chainable
+ performCheckViolation(response: RouteHandler, aliasName: string): Chainable
//Created by omkar
loginDynamic(email: string, password: string): Chainable
performSearchDynamic(searchTerm: string): Chainable
@@ -89,6 +90,7 @@ const GCL_URL = 'https://bap-gcl-**.becknprotocol.io'
const STRAPI_URL = 'https://bap-backend-**.becknprotocol.io/api'
const XINPUT_SUBMIT = 'https://bpp-unified-strapi-dev.becknprotocol.io/beckn-bpp-adapter/x-input'
const S3Integration_URL = 'https://bap-s3integration-api-dev.becknprotocol.io'
+const CHECK_VIOLATION_URL = 'https://bpp-unified-strapi-dev.becknprotocol.io/policy-violation/bap'
Cypress.Commands.add('getByData', selector => {
return cy.get(`[data-test=${selector}]`)
@@ -123,17 +125,20 @@ Cypress.Commands.add('login', (baseUrl, email, password) => {
)
})
-Cypress.Commands.add('setGeolocation', aliasName => {
- cy.window().then(win => {
- cy.intercept('GET', '**/maps.googleapis.com/maps/api/geocode/json*', {
- fixture: 'homePage/address.json'
- }).as(aliasName as string)
- cy.stub(win.navigator.geolocation, 'getCurrentPosition').callsFake(success => {
- success({ coords: { latitude: 28.4594965, longitude: 77.0266383 } })
+Cypress.Commands.add(
+ 'setGeolocation',
+ (aliasName, location = { latitude: 28.4594965, longitude: 77.0266383 }, data = 'homePage/address.json') => {
+ cy.window().then(win => {
+ cy.intercept('GET', '**/maps.googleapis.com/maps/api/geocode/json*', {
+ fixture: data
+ }).as(aliasName as string)
+ cy.stub(win.navigator.geolocation, 'getCurrentPosition').callsFake(success => {
+ success({ coords: location })
+ })
})
- })
- cy.wait(500)
-})
+ cy.wait(500)
+ }
+)
Cypress.Commands.add('performSearch', (searchTerm, response) => {
const searchInputId = 'search-input'
@@ -229,6 +234,10 @@ Cypress.Commands.add('performXinput_Submit', (response, aliasName) => {
cy.intercept('POST', `${GCL_URL}/x-input/submit`, response).as(aliasName)
})
+Cypress.Commands.add('performCheckViolation', (response, aliasName) => {
+ cy.intercept('POST', `${CHECK_VIOLATION_URL}/policy/checkViolation`, response).as(aliasName)
+})
+
Cypress.Commands.add('fillComplaintDetails', complaintDetails => {
cy.getByData(testIds.checkoutpage_complaints_Details).getByData(testIds.checkoutpage_openForm).eq(0).click()
cy.getByData(testIds.checkoutpage_complaints_Details)
diff --git a/shared/dataTestIds.ts b/shared/dataTestIds.ts
index 92218b781..7cb50562a 100644
--- a/shared/dataTestIds.ts
+++ b/shared/dataTestIds.ts
@@ -341,7 +341,8 @@ const testIds = {
job_details_name: 'job-details-name',
job_details_provider_name: 'job-details-provider-name',
job_details_description: 'job-details-description',
- job_details_apply: 'job-details-apply'
+ job_details_apply: 'job-details-apply',
+ mobility_cancel_search: 'cancel-search'
}
export { testIds }