Skip to content

Guard getResponsiveWidths return type with Array.isArray#2126

Merged
bhokaremoin merged 2 commits intoPPLT-4949-add-cors-iframe-handling-and-multi-dom-width-configfrom
copilot/sub-pr-2121-another-one
Feb 28, 2026
Merged

Guard getResponsiveWidths return type with Array.isArray#2126
bhokaremoin merged 2 commits intoPPLT-4949-add-cors-iframe-handling-and-multi-dom-width-configfrom
copilot/sub-pr-2121-another-one

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 28, 2026

getResponsiveWidths() returned response.body?.widths || [], which passes through any truthy non-array value (e.g., { widths: {} }) and breaks callers expecting an array.

Changes

  • src/get-responsive-widths.js: Replace || [] fallback with an explicit Array.isArray check so any non-array server response safely falls back to []
// Before
return response.body?.widths || [];

// After
return Array.isArray(response.body?.widths) ? response.body.widths : [];
  • test/index.test.js: Add test case covering a server response of { widths: {} } to assert an empty array is returned

✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

… return type

Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>
Copilot AI changed the title [WIP] Update responsive widths config endpoint and CORS processing Guard getResponsiveWidths return type with Array.isArray Feb 28, 2026
@bhokaremoin bhokaremoin marked this pull request as ready for review February 28, 2026 17:57
@bhokaremoin bhokaremoin requested a review from a team as a code owner February 28, 2026 17:57
@bhokaremoin bhokaremoin requested review from amandeepsingh333 and pankaj443 and removed request for a team February 28, 2026 17:57
@bhokaremoin bhokaremoin merged commit 99e3aee into PPLT-4949-add-cors-iframe-handling-and-multi-dom-width-config Feb 28, 2026
35 of 36 checks passed
@bhokaremoin bhokaremoin deleted the copilot/sub-pr-2121-another-one branch February 28, 2026 17:57
prklm10 pushed a commit that referenced this pull request Mar 10, 2026
…g to core (#2121)

* feat: add responsive widths endpoint for multi-DOM capture

- Add GET /percy/widths-config endpoint to compute responsive widths
- Implement computeResponsiveWidths() in core utils for width/height calculation
- Add getResponsiveWidths() SDK method to fetch computed widths
- Mobile device widths include height, other widths are height-agnostic
- Returns widths sorted in ascending order

* adding unit tests

* fixing test coverage

* fixing test coverage

* feat: add CORS iframe processing support for domSnapshots

- Add processCorsIframes and processCorsIframesInDomSnapshot utilities in utils.js
- Add appendUrlSearchParam utility for adding query parameters to URLs
- Integrate CORS iframe processing in snapshot method before validation
- Process iframe resources and update HTML src attributes with width-aware URLs
- Support both single domSnapshot object and array of domSnapshots

* adding tests for cors iframes functionality

* moving creatating of iframe resource object logic to CLI from sdk, since its common

* fixing test

* adding nosemgrep comment for the regex error

* Fix regex injection via unescaped percyElementId in processCorsIframesInDomSnapshot (#2124)

* Initial plan

* fix: escape percyElementId before using in RegExp to prevent regex injection

Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>

* Guard getResponsiveWidths return type with Array.isArray (#2126)

* Initial plan

* Use Array.isArray check in getResponsiveWidths to ensure stable array return type

Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>

* Validate required fields in corsIframes entries to avoid throwing on malformed input (#2125)

* Initial plan

* Add validation for malformed corsIframes entries in processCorsIframesInDomSnapshot

Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>

* adding validation for widths as well

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bhokaremoin <75439850+bhokaremoin@users.noreply.github.com>
Co-authored-by: bhokaremoin <bhokaremoin@gmail.com>

* adding no semgrep

* fix: prioritize user-passed widths over mobile widths in computeResponsiveWidths

* fixing test

* adding cors iframe in config so it can become part of domSnapshot

* fixing test with the config change

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.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