-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
JSDOM doesn't retrieve the "*style.backgroundColor = 'pink'" property set on a table row #1965
Comments
We don't support getting the style property as JS properties on |
@TimothyGu Very useful information. Should we keep this open until support is added? |
@TimothyGu Unfortunately, this still doesn't work on NodeJS (works in the browser): [].slice.call(document.querySelectorAll('tr')).forEach((tr) => { return tr.style.backgroundColor = 'pink'; });
// Prints ["","","","",""]
console.log(JSON.stringify([].slice.call(document.querySelectorAll('tr')).map((tr) => { return tr.style.getPropertyValue('background-color'); }))); |
@FagnerMartinsBrack Apologies, I believe I was incorrect in my earlier evaluation of this issue. This seems to be another manifestation of https://github.com/chad3814/CSSStyleDeclaration/issues/48, in that only a subset of supported CSS colors are regarded as such by the cssstyle module we use: Until @Zirro finishes his work I'm not sure there's anything that can be done about this, as @chad3814 does not seem to be active. |
@TimothyGu So from what I understand This one works in node: [].slice.call(document.querySelectorAll('tr')).forEach((tr) => { return tr.style.backgroundColor = '#000'; });
// Expected to have an array of "pink" but got an array of empty values
// Result: [ '', '', '', '', '' ]
console.log([].slice.call(document.querySelectorAll('tr')).map((tr) => { return tr.style.backgroundColor; })); And in the browser: https://jsfiddle.net/r0u9p0uv/1/ |
@FagnerMartinsBrack Yes I believe so. |
Might be worth using the extended color list to be spec compliant: https://www.w3.org/TR/css3-color/ See on "4.3. Extended color keywords". |
Note, we always try to implement the latest Editor's Draft, so https://drafts.csswg.org/css-color/#named-colors. |
## Description Certain CSS styles have been failing to appear in Jest tests due to an outdated JSDom(and some it's dependencies, one being updated with bugfix in Feb 2019). This was causing false positives for `gatsby-image` tests for a while. Nothing major, just some CSS props weren't appearing in tests when they technically should have been. ## Details [My PR](#12468) is failing in the CI but was passing tests locally. I had been running tests on the `gatsby-image` package on it's own, which uses `react-testing-library: ^5.0.0`, and it failed against the snapshot test. Updated snapshots failed when my PR ran on CircleCI. The main repo root yarn.lock file has `react-testing-library: ^5.2.1` locked down(retrieves 5.2.1 instead of 5.9.0, although is a v6 release now). Correcting this didn't help for passing the test suite. [`cssstyle: 1.2.0`](jsdom/cssstyle#74) fixes the [problems with certain styles](jsdom/jsdom#1965 (comment)) being [ignored](testing-library/react-testing-library#214. `transitionDelay`, and certain color values for `backgroundColor`, "red" works, but not "lightgray"). That however [needs `jsdom: ^12.0.0`](jsdom/jsdom@ed11465#diff-b9cfc7f2cdf78a7f4b91a753d10865a2), but [Jest refuses to update as support for Node <8 is dropped](jestjs/jest#8016 (comment)).. I've added a workaround until Jest supports a newer major version of JSDom. Using [`jest-environment-jsdom-fourteen`](https://github.com/ianschmitz/jest-environment-jsdom-fourteen) is the [advised approach](jestjs/jest#7122 (comment)) for the meantime, it'll only impact users running Jest test suite on Node 6, that should be fine for Gatsby? (Node 6 CI test seems to pass) Only `gatsby-image` tests needed updates. [Node 6 will be EoL in May](https://github.com/nodejs/Release#release-schedule), no idea when Jest will bump JSDom from then, but we could wait a few months if you rather avoid the workaround? ## Related Issues #12468 (Spotted it while working on this)
Basic info:
Minimal reproduction case
How does similar code behave in browsers?
The same code works in the browser: https://jsfiddle.net/r0u9p0uv/
Am I missing something?
The text was updated successfully, but these errors were encountered: