Skip to content

test(calling): add voicemail playwright coverage#5091

Open
Jahnavi314 wants to merge 1 commit into
webex:nextfrom
Jahnavi314:voicemail-playwright-tests
Open

test(calling): add voicemail playwright coverage#5091
Jahnavi314 wants to merge 1 commit into
webex:nextfrom
Jahnavi314:voicemail-playwright-tests

Conversation

@Jahnavi314

@Jahnavi314 Jahnavi314 commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

COMPLETES #https://jira-eng-sjc12.cisco.com/jira/browse/CAI-7879

This pull request addresses

Adds Playwright E2E coverage for the Webex Calling voicemail flow. The test validates that an unanswered call can create a voicemail, the callee can list and play the voicemail, mark/read state is reflected in the UI, pagination fetch works, and the fetched paginated voicemail can also be played before cleanup.

by making the following changes

  • Added SET_VOICEMAIL Playwright project and user-set configuration.
  • Added voicemail suite/test group for the unanswered-call voicemail journey.
  • Added voicemail Playwright helpers for list fetching, UI row lookup, playback, read/unread handling, pagination, and cleanup.

Change Type

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Tooling change
  • Internal code refactor

The following scenarios were tested

  • Automated Playwright E2E:
    • User 1 records voicemail and ends the call.
    • User 2 fetches voicemail list and sees the voicemail from User 1.
    • User 2 plays the voicemail and waits until audio playback finishes.
    • Voicemail read state is reflected in the UI.
    • User 2 fetches voicemail using offset/limit pagination.
    • Fetched paginated voicemail row is shown and played.

The GAI Coding Policy And Copyright Annotation Best Practices

  • GAI was not used (or, no additional notation is required)
  • Code was generated entirely by GAI
  • GAI was used to create a draft that was subsequently customized or modified
  • Coder created a draft manually that was non-substantively modified by GAI (e.g., refactoring was performed by GAI on manually written code)
  • Tool used for AI assistance (GitHub Copilot / Other - specify)
    • Github Copilot
    • Other - ChatGPT
  • This PR is related to
    • Feature
    • Defect fix
    • Tech Debt
    • Automation

I certified that

  • I have read and followed contributing guidelines
  • I discussed changes with code owners prior to submitting this pull request
  • I have not skipped any automated checks
  • All existing and new tests passed
  • I have updated the documentation accordingly

@Jahnavi314 Jahnavi314 requested a review from a team as a code owner July 9, 2026 18:05

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a1a8d38dfe

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +223 to +224
await page.locator(CALLING_SELECTORS.VOICEMAIL_BTN).click({timeout: AWAIT_TIMEOUT});
await expect(page.locator(`${CALLING_SELECTORS.VOICEMAIL_TABLE} th`)).toHaveCount(4, {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle non-UCM voicemail rendering before using the UI

On Webex Calling/BroadWorks projects, this click runs the sample app's non-UCM createVoiceMail() path; in docs/samples/calling/app.js:1373-1377 data.voicemailList is assigned to an array and then read as voicemailList.voicemailList.length, so the handler throws before adding table headers or rows. The new suite calls this helper unconditionally after the API poll finds a message, so WXC/BWRKS runs will time out waiting for the voicemail table unless the sample renderer is fixed or the test bypasses that broken branch for those backends.

Useful? React with 👍 / 👎.

Comment on lines +379 to +380
await page.locator(CALLING_SELECTORS.VOICEMAIL_FETCH_LIST_BTN).click({timeout: AWAIT_TIMEOUT});
await expect(page.locator(CALLING_SELECTORS.VOICEMAIL_TABLE_ROWS)).toHaveCount(limit, {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Render pagination results before counting rows

This helper clears #voicemailTable and then clicks the pagination button, but the sample page handler fetchVoicemailList() only calls voicemail.getVoicemailList(...) and logs the response (docs/samples/calling/app.js:1642-1655); it never rebuilds the table. In VM-CALL-001 the subsequent row count therefore times out even when the backend returned one voicemail, so the helper needs to populate the table from the API response or use a UI path that actually renders the requested page.

Useful? React with 👍 / 👎.

@aws-amplify-us-east-2

Copy link
Copy Markdown

This pull request is automatically being deployed by Amplify Hosting (learn more).

Access this pull request here: https://pr-5091.d3m3l2kee0btzx.amplifyapp.com

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants