1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00

Test stateful component style update (#4309)

This commit is contained in:
Tim Neutkens 2018-05-08 17:34:24 +02:00 committed by GitHub
parent 76f5e979b3
commit 4bec4cc6f7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 68 additions and 10 deletions

View file

@ -0,0 +1,20 @@
import React, { Component } from 'react'
export default class StyleStateFul extends Component {
render () {
return (
<React.Fragment>
<div className='hmr-style-page'>
<p>
This is the style page.
<style jsx>{`
p {
font-size: 100px;
}
`}</style>
</p>
</div>
</React.Fragment>
)
}
}

View file

@ -1,14 +1,17 @@
import React from 'react'
export default () => {
return (
<>' '<div className='hmr-style-page'>
<p>
This is the style page.
<style jsx>{`
p {
font-size: 100px;
}
`}</style>
</p>
</div>' '</>
<React.Fragment>
<div className='hmr-style-page'>
<p>
This is the style page.
<style jsx>{`
p {
font-size: 100px;
}
`}</style>
</p>
</div>
</React.Fragment>
)
}

View file

@ -133,6 +133,41 @@ export default (context, render) => {
browser.close()
})
// Added because of a regression in react-hot-loader, see issues: #4246 #4273
// Also: https://github.com/zeit/styled-jsx/issues/425
it('should update styles in a stateful component correctly', async () => {
const browser = await webdriver(context.appPort, '/hmr/style-stateful-component')
const pTag = await browser.elementByCss('.hmr-style-page p')
const initialFontSize = await pTag.getComputedCss('font-size')
expect(initialFontSize).toBe('100px')
const pagePath = join(__dirname, '../', 'pages', 'hmr', 'style-stateful-component.js')
const originalContent = readFileSync(pagePath, 'utf8')
const editedContent = originalContent.replace('100px', '200px')
// Change the page
writeFileSync(pagePath, editedContent, 'utf8')
// wait for 5 seconds
await waitFor(5000)
try {
// Check whether the this page has reloaded or not.
const editedPTag = await browser.elementByCss('.hmr-style-page p')
const editedFontSize = await editedPTag.getComputedCss('font-size')
expect(editedFontSize).toBe('200px')
} finally {
// Finally is used so that we revert the content back to the original regardless of the test outcome
// restore the about page content.
writeFileSync(pagePath, originalContent, 'utf8')
}
browser.close()
})
})
})
}