graphql-engine/frontend/libs/nx/storybook-addon-console-env
Nicolas Beaussart cad58e0c43 console: fix storybook lagging promises
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/9132
Co-authored-by: Divi <32202683+imperfect-fourth@users.noreply.github.com>
Co-authored-by: Nicolas Inchauspe <710410+nicoinch@users.noreply.github.com>
GitOrigin-RevId: c92295b98c8db2b0ecc6f964b02f49820db4d77d
2023-05-24 09:57:29 +00:00
..
.storybook frontend: upgrade to storybook 7 2023-05-09 17:41:28 +00:00
prod frontend: upgrade to storybook 7 2023-05-09 17:41:28 +00:00
src frontend: upgrade to storybook 7 2023-05-09 17:41:28 +00:00
.babelrc console: apply new sidebar design 2023-02-15 12:38:16 +00:00
.eslintrc.json console: apply new sidebar design 2023-02-15 12:38:16 +00:00
.swcrc frontend: update nx to 15.8.1 2023-03-01 14:17:47 +00:00
jest.config.ts frontend: update nx to 15.8.1 2023-03-01 14:17:47 +00:00
package.json console: fix storybook lagging promises 2023-05-24 09:57:29 +00:00
preset.js frontend: upgrade to storybook 7 2023-05-09 17:41:28 +00:00
project.json frontend: upgrade to storybook 7 2023-05-09 17:41:28 +00:00
README.md frontend: upgrade to storybook 7 2023-05-09 17:41:28 +00:00
tsconfig.json console: apply new sidebar design 2023-02-15 12:38:16 +00:00
tsconfig.lib.json console: apply new sidebar design 2023-02-15 12:38:16 +00:00

nx-storybook-addon-console-env

This library contains a Storybook addon allowing to modify some Hasura console env variables (window.__env), the addon uses Storybook global variables under the hood to modify and inject console variables.

What is it for?

Addon

This addon adds a Console env tab in Storybook addons tabs.

It displays and allows to modify some console env vars (for now isAdminSet and consoleType) and reloads stories to emulate each type of console or login status.

Stories parameter

It is possible to add parameters to stories (for now isAdminSet and consoleType) to force those variables, otherwise, default variables values are used.

How it works

Some console env vars (for now isAdminSet and consoleType) are stored as Storybook globals variables and are displayed/modified thanks to this addon.

When a console env global variables is updated (through a user interaction in the UI or a story parameter):

  • the URL search parameters are updates with the global variables values,
  • a reload of the iFrame containing the story is triggered.

A script in preview-body.html will extract the variables from the URL and build the proper window.__env object, then console globals are correctly initialized.

Setup

To manipulate console env variables from Storybook UI, you need to:

  • install the addon,

Install addon

Add reference to addon in your .storybook/main.ts file.

const config: StorybookConfig = {
  ...
  addons: [
    ...
    'storybook-addon-console-env',
    ...
  ],
  ...
};

export default config;

Testing

This addon is tested thanks to Chromatic snapshots. No interaction test has been implemented yet, as the play function cannot interact with addons control.