@regression
@cloud
Feature: Interaction Feature - Manual and Dialer
Description: As a sales executive
I want to create call interactions manually or by dialing customers
So that interactions, stages, and call recordings are tracked correctly
File name: leadInteraction.feature
Relative path: feature/leadInteraction.feature
@regression
@cloud
Scenario: Log a successful manual call interaction and update lead stage to Hot
Given
a lead is already created in the system for Calling
00:00:04.991
And
the user is logged into the CRM as "Super Admin"
00:00:08.931
And
the user is on the Leads screen
00:00:13.284
And
the user navigate to the Lead Details screen for Calling
00:00:01.502
When
the user logs a "Connected" call interaction with the following details:
00:00:17.885
| Time | 01:10 AM |
|---|---|
| Call Category | First call |
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Duration | 00:05:20 |
| Notes | Interested to pay in two days, Though lead taken different service earlier from other app |
| Image | true |
Then
the interaction record should be saved successfully
00:00:06.908
And
the call history should display the new interaction details
00:00:00.068
And
the interaction notes should be saved
00:00:00.620
And
the lead stage should be updated to "Hot" on the profile page
00:00:07.088
And
the operator should be "Manual" with no caller id
00:00:00.198
@regression
@cloud
Scenario: Log a manual "Not Connected" call interaction and verify lead stage
Given
a lead is already created in the system for Calling
00:00:04.183
And
the user is logged into the CRM as "Super Admin"
00:00:07.069
And
the user is on the Leads screen
00:00:13.187
And
the user navigate to the Lead Details screen for Calling
00:00:01.634
When
the user logs a "Not Connected" call interaction with the following details with screenshot:
00:00:14.026
| Time | 01:10 AM |
|---|---|
| Call Category | First call |
| Call Type | Outbound |
| Disposition | Not Connected |
| Sub Disposition | No Response |
| Stage | Warm |
| Call Status | Not Answered |
| Duration | 00:00:00 |
| Notes | Customer did not answer |
| Image | true |
Then
the interaction record should be saved successfully
00:00:06.870
And
the call history should display the new interaction details
00:00:00.087
And
the interaction notes should be saved
00:00:00.624
And
the lead stage should be updated to "Warm" on the profile page
00:00:05.425
And
the operator should be "Manual" with no caller id
00:00:00.120
@regression
@cloud
Scenario: Successfully edit an existing interaction note
Given
a lead is already created in the system for Calling
00:00:04.190
And
the user is logged into the CRM as "Super Admin"
00:00:09.038
And
the user is on the Leads screen
00:00:13.167
And
the user navigate to the Lead Details screen for Calling
00:00:01.595
When
the user logs a "Connected" call interaction with the following details:
00:00:15.968
| Time | 01:10 AM |
|---|---|
| Call Category | First call |
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Duration | 00:05:20 |
| Notes | Interested to pay in two days, Though lead taken different service earlier from other app |
| Image | true |
Then
the interaction record should be saved successfully
00:00:06.259
And
the call history should display the new interaction details
00:00:00.103
And
the interaction notes should be saved
00:00:00.547
And
then user updates the note again with :
00:00:02.799
It is an Updated Text for note. It is an Automation Test to update the note.
And
the updated interaction notes should be saved
00:00:00.547
@regression
@cloud
Scenario: Prevent saving a manual interaction record when mandatory data is missing
Given
a lead is already created in the system for Calling
00:00:04.215
And
the user is logged into the CRM as "Super Admin"
00:00:09.396
And
the user is on the Leads screen
00:00:12.989
And
the user navigate to the Lead Details screen for Calling
00:00:01.693
When
the user attempts to save a call interaction without entering any data
00:00:00.547
Then
the system should prevent saving the interaction
00:00:00.008
@regression
@cloud
Scenario: Verify mandatory field validation after a completed Plivo call
Given
a lead is already created in the system for Calling
00:00:04.393
And
the user is logged into the CRM as "Super Admin"
00:00:09.162
And
the user is on the Leads screen
00:00:13.271
And
the user navigate to the Lead Details screen for Calling
00:00:01.544
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
the post-call interaction form is active
0s
When
the user attempts to save the interaction without entering mandatory data
0s
Then
the system should not allow saving and should highlight all required fields
0s
@regression
@cloud
Scenario: When user miss to save Call Intection, and Updates the Call Details Later, with Not Connected Call
Given
a lead is already created in the system for Calling
00:00:04.296
And
the user is logged into the CRM as "Super Admin"
00:00:08.869
And
the user is on the Leads screen
00:00:12.258
And
the user navigate to the Lead Details screen for Calling
00:00:01.580
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
the post-call interaction form is active but user close the form
0s
And
user update the missing data from the interaction table:
0s
| Call Category | First call |
|---|---|
| Disposition | Not Connected |
| Sub Disposition | No Response |
| Duration | 00:00:00 |
| Notes | Demo Note |
@regression
@cloud
Scenario: When user miss to save Call Intection, and Updates the Call Details Later, with Connected Call
Given
a lead is already created in the system for Calling
00:00:04.407
And
the user is logged into the CRM as "Super Admin"
00:00:07.002
And
the user is on the Leads screen
00:00:12.552
And
the user navigate to the Lead Details screen for Calling
00:00:01.671
Given
the user has selected "Plivo" as the active dialer
00:00:00.650
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
the customer answers the call successfully
0s
And
user terminated the call
0s
And
the post-call interaction form is active but user close the form
0s
And
user update the missing data from the interaction table:
0s
| Call Category | First call |
|---|---|
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Duration | 00:00:11 |
| Notes | Demo Note, which need to be more than Sixt Character. So Added based on the requirement flagged by the system |
@regression
@cloud
Scenario: Verify system logs a default entry when the post-call form is dismissed
Given
a lead is already created in the system for Calling
00:00:04.755
And
the user is logged into the CRM as "Super Admin"
00:00:08.875
And
the user is on the Leads screen
00:00:11.937
And
the user navigate to the Lead Details screen for Calling
00:00:01.693
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
the post-call interaction form is active
0s
When
the user dismisses the interaction form without saving
0s
Then
the system should still record a base entry in the lead history
0s
And
the entry should contain no disposition, category, or notes
0s
@regression
@cloud
Scenario: Verify that the Notes requirement toggles based on Call Disposition
Given
a lead is already created in the system for Calling
00:00:04.464
And
the user is logged into the CRM as "Super Admin"
00:00:07.159
And
the user is on the Leads screen
00:00:12.079
And
the user navigate to the Lead Details screen for Calling
00:00:01.577
Given
the user is on the Call Interaction form
00:00:00.421
When
the user selects "Not Connected" as the disposition
00:00:00.431
Then
the Notes field should be marked as optional
00:00:00.010
When
the user changes the disposition to "Connected" with following details :
00:00:14.247
| Time | 01:10 AM |
|---|---|
| Call Category | First call |
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Duration | 00:05:20 |
| Notes | 5 Words |
| Image | true |
Then
the Notes field should be marked as mandatory with minimum character 60
00:00:00.183
@regression
@cloud
Scenario: Verify that cancelling a manual Interaction does not create any new records
Given
a lead is already created in the system for Calling
00:00:04.179
And
the user is logged into the CRM as "Super Admin"
00:00:10.680
And
the user is on the Leads screen
00:00:11.902
And
the user navigate to the Lead Details screen for Calling
00:00:01.542
Given
the user opens the Call Interaction modal
00:00:00.393
When
the user fills the interaction details but decides to cancel:
00:00:14.315
| Time | 01:10 AM |
|---|---|
| Call Category | First call |
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Duration | 00:05:20 |
| Notes | Interested to pay in two days, Though lead taken different service earlier from other app |
| Image | true |
And
the user closes the interaction modal without saving
00:00:00.020
And
the call history should not contain any new interaction records
00:00:05.846
@regression
@cloud
Scenario: Validate end-to-end call lifecycle and stage transition via Plivo Dialer
Given
a lead is already created in the system for Calling
00:00:06.485
And
the user is logged into the CRM as "Super Admin"
00:00:07.323
And
the user is on the Leads screen
00:00:13.266
And
the user navigate to the Lead Details screen for Calling
00:00:01.534
Given
the user has selected "Plivo" as the active dialer
00:00:00.578
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
after a few unanswered rings, the user ends the call from the CRM and logs the interaction using the following information:
0s
| Call Category | First call |
|---|---|
| Call Type | Outbound |
| Disposition | Not Connected |
| Sub Disposition | No Response |
| Stage | Cold |
| Call Status | Coach Terminated |
| Duration | 00:00:00 |
| Notes | Called hangged up by CRM User |
Then
the interaction record should be saved successfully
0s
And
the call history should display the new interaction details after call done
0s
And
the interaction notes should be saved
0s
And
the lead stage should be updated to "Cold" on the profile page
0s
And
the operator should be "Plivo" with a valid called id
0s
@regression
Scenario: Verify successful interaction logging and audio recording for a connected Plivo call
Given
a lead is already created in the system for Calling
00:00:04.215
And
the user is logged into the CRM as "Super Admin"
00:00:09.194
And
the user is on the Leads screen
00:00:13.128
And
the user navigate to the Lead Details screen for Calling
00:00:01.541
Given
the user has selected "Plivo" as the active dialer
00:00:00.583
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
the customer answers the call successfully
0s
And
the user terminates the session after a conversation and logs the interaction:
0s
| Call Category | First call |
|---|---|
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Notes | Product demo provided; customer interested. Need to connect after seven days |
Then
the interaction Entry should be saved successfully
0s
And
a valid audio recording of the call should be accessible within the interaction history with Operator "Plivo"
0s
Given
a lead is already created in the system for Calling
00:00:04.268
And
the user is logged into the CRM as "Super Admin"
00:00:09.461
And
the user is on the Leads screen
00:00:14.302
And
the user navigate to the Lead Details screen for Calling
00:00:01.588
When
the user logs a "Connected" call interaction with the following details:
00:00:15.115
| Time | 01:10 AM |
|---|---|
| Call Category | First call |
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Duration | 00:05:20 |
| Notes | Interested to pay in two days, Though lead taken different service earlier from other app |
| Image | true |
Then
the interaction record should be saved successfully
00:00:06.959
And
the call history should display the new interaction details
00:00:00.060
And
Excel report is downloaded
00:00:01.787
Given
a lead is already created in the system for Calling
00:00:04.345
And
the user is logged into the CRM as "Super Admin"
00:00:07.164
And
the user is on the Leads screen
00:00:13.006
And
the user navigate to the Lead Details screen for Calling
00:00:01.535
Given
the user has selected "Plivo" as the active dialer
00:00:00.643
Error: expect(locator).toBeVisible() failed
Locator: getByText('Plivo is ready! You can now make a call.', { exact: true })
Expected: visible
Timeout: 30000ms
Error: element(s) not found
Call log:
- Expect "toBeVisible" with timeout 30000ms
- waiting for getByText('Plivo is ready! You can now make a call.', { exact: true })
at ../tests/ui_test/page/LeadInteractionPage.js:693
691 | //Validate Plivo Ready Toast
692 | async validatePlivoReadyToast() {
) 693 | await expect(this.plivoReadyToast).toBeVisible();
| ^
694 | }
695 |
696 | //Click on Call
And
the customer answers the call successfully
0s
And
the user terminates the session after a conversation and logs the interaction:
0s
| Call Category | First call |
|---|---|
| Call Type | Outbound |
| Disposition | Connected |
| Sub Disposition | Pitched Interest |
| Stage | Hot |
| Call Status | Completed |
| Next Follow Up Date | 11:45 PM |
| Notes | Product demo provided; customer interested. Need to connect after seven days |
Then
the interaction Entry should be saved successfully
0s
And
Audio is downloaded
0s