-
-
Notifications
You must be signed in to change notification settings - Fork 9.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Addon Test: Support viewport globals #29319
Addon Test: Support viewport globals #29319
Conversation
☁️ Nx Cloud ReportCI is running/has finished running commands for commit 27aa84b. As they complete they will appear below. Click to see the status, the terminal output, and the build insights. 📂 See all runs for this CI Pipeline Execution ✅ Successfully ran 1 targetSent with 💌 from NxCloud. |
733fa26
to
bba2178
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
9 file(s) reviewed, 6 comment(s)
Edit PR Review Bot Settings | Greptile
const viewportsParam: any = { | ||
defaultViewport: 'nonExistentViewport', | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: using 'any' type here might be too permissive
const viewportsParam: any = { | ||
viewports: INITIAL_VIEWPORTS, | ||
// supported by default in addon viewports |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: using 'any' type here might be too permissive
export interface ViewportsParam { | ||
defaultViewport: string; | ||
viewports: ViewportMap; | ||
defaultViewport?: string; | ||
viewports?: ViewportMap; | ||
options?: ViewportMap; | ||
disable?: boolean; | ||
disabled?: boolean; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Consider adding JSDoc comments to explain the purpose of each property in the ViewportsParam interface
export interface ViewportsGlobal { | ||
value?: string; | ||
disable?: boolean; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Add JSDoc comments to explain the purpose of the ViewportsGlobal interface and its properties
@@ -47,8 +57,18 @@ const parseDimension = (value: string, dimension: 'width' | 'height') => { | |||
} | |||
}; | |||
|
|||
export const setViewport = async (viewportsParam: ViewportsParam = {} as ViewportsParam) => { | |||
const defaultViewport = viewportsParam.defaultViewport; | |||
export const setViewport = async (parameters: Parameters = {}, globals: Globals = {}) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: Update function signature to use more specific types instead of Parameters and Globals
const viewports = { | ||
...MINIMAL_VIEWPORTS, | ||
...viewportsParam.viewports, | ||
...viewportsParam.options, | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logic: Merging viewports might overwrite properties. Ensure this is the intended behavior
bba2178
to
9af9b98
Compare
let defaultViewport; | ||
const viewportsParam: ViewportsParam = parameters.viewport ?? {}; | ||
const viewportsGlobal: ViewportsGlobal = globals.viewport ?? {}; | ||
const isDisabled = viewportsParam.disable || viewportsParam.disabled; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should this take viewportsGlobal.disable
into account too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From what I can see there is no such thing as global.viewport.disable, only from parameters:
const { options = MINIMAL_VIEWPORTS, disable } = config || {}; |
can you show me where it's used?
9af9b98
to
a28553f
Compare
a28553f
to
27aa84b
Compare
Closes #29324
What I did
This PR adds support for the new globals API for viewports, so that users that use the new test addon can get Playwright to use the correct dimensions respecting the viewports addon, both via parameters (legacy) API as well as globals (new) API
To make this work, I had to update portable stories to also include globals as part of its return type.
Checklist for Contributors
Testing
The changes in this PR are covered in the following automated tests:
Manual testing
This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!
There are tests for all use cases, but to test it manually you can use a story like the following (using both parameters and globals apis):
Then run Vitest browser mode tests visually, and notice the viewport changing in size.
Documentation
MIGRATION.MD
Checklist for Maintainers
When this PR is ready for testing, make sure to add
ci:normal
,ci:merged
orci:daily
GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found incode/lib/cli/src/sandbox-templates.ts
Make sure this PR contains one of the labels below:
Available labels
bug
: Internal changes that fixes incorrect behavior.maintenance
: User-facing maintenance tasks.dependencies
: Upgrading (sometimes downgrading) dependencies.build
: Internal-facing build tooling & test updates. Will not show up in release changelog.cleanup
: Minor cleanup style change. Will not show up in release changelog.documentation
: Documentation only changes. Will not show up in release changelog.feature request
: Introducing a new feature.BREAKING CHANGE
: Changes that break compatibility in some way with current major version.other
: Changes that don't fit in the above categories.🦋 Canary release
This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the
@storybookjs/core
team here.core team members can create a canary release here or locally with
gh workflow run --repo storybookjs/storybook canary-release-pr.yml --field pr=<PR_NUMBER>
Greptile Summary
This PR adds support for viewport globals in the Storybook addon testing framework, enhancing the ability to test responsive designs across different viewport sizes.
setViewport
function inviewports.ts
to handle both parameters and globals for viewport settingsviewports.test.ts
to cover the globals API and various viewport dimension formatstestStory
function intest-utils.ts
to pass both parameters and globals tosetViewport
ComposedStoryFn
type incomposedStory.ts
to include aglobals
propertytabs.stories.tsx
andSidebar.stories.tsx
to enable testing with viewport globals