Skip to content

TypeError: Cannot read properties of null (reading 'deleteRule') #1640

@davidnormo

Description

@davidnormo

In cypress in UI mode, after a test has finished hovering on some of the commands restores a snapshot of the dom. This often causes this error to be thrown:

TypeError: Cannot read properties of null (reading 'deleteRule')
    at DomRenderer.replaceRule (jss.esm.js:2000:1)
    at StyleSheet.replaceRule (jss.esm.js:1146:1)
    at Array.onProcessStyle (jss-plugin-nested.esm.js:87:1)
    at PluginsRegistry.onProcessStyle (jss.esm.js:1313:1)
    at PluginsRegistry.onProcessRule (jss.esm.js:1303:1)
    at StyleSheet.replaceRule (jss.esm.js:1135:1)
    at Array.onProcessStyle (jss-plugin-nested.esm.js:87:1)
    at PluginsRegistry.onProcessStyle (jss.esm.js:1313:1)
    at PluginsRegistry.onProcessRule (jss.esm.js:1303:1)
    at StyleSheet.replaceRule (jss.esm.js:1135:1)

It seems related to this line:

this.element.sheet.deleteRule(index)

The sheet property of the element has been set to null by the browser. A simple null check here to exit early might well fix the issue.

From what I can tell it originates from MUI's makeStyles that changes styles based on props e.g.

makeStyles({
  // run when props changes but because of cypress the expected stylesheet has gone...
  root: (props) => ({
    color: props.a ? '#000' : '#fff'
  })
})

We are using JSS 10.9.2 from MUI 4.11.4

Thanks
Dave

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions