import cn from 'classnames'; import semver from 'semver'; import PropTypes from 'prop-types'; import IssueList from './IssueList'; import {parse} from 'query-string'; import {semverString} from './propTypes'; const React = window.React; const propTypes = { children: PropTypes.node.isRequired, title: PropTypes.node.isRequired, resolvedIn: semverString, introducedIn: semverString, resolvedBy: PropTypes.string, }; class TestCase extends React.Component { constructor(props, context) { super(props, context); this.state = { complete: false, }; } handleChange = e => { this.setState({ complete: e.target.checked, }); }; render() { const { title, description, introducedIn, resolvedIn, resolvedBy, affectedBrowsers, relatedIssues, children, } = this.props; let {complete} = this.state; const {version} = parse(window.location.search); const isTestFixed = !version || !resolvedIn || semver.gte(version, resolvedIn); complete = !isTestFixed || complete; return (

{introducedIn &&
First broken in:
} {introducedIn && (
{introducedIn}
)} {resolvedIn &&
First supported in:
} {resolvedIn && (
{resolvedIn}
)} {resolvedBy &&
Fixed by:
} {resolvedBy && (
{resolvedBy}
)} {affectedBrowsers &&
Affected browsers:
} {affectedBrowsers &&
{affectedBrowsers}
} {relatedIssues &&
Related Issues:
} {relatedIssues && (
)}

{description}

{!isTestFixed && (

Note: This test case was fixed in a later version of React. This test is not expected to pass for the selected version, and that's ok!

)} {children}
); } } TestCase.propTypes = propTypes; TestCase.Steps = class extends React.Component { render() { const {children} = this.props; return (

Steps to reproduce:

    {children}
); } }; TestCase.ExpectedResult = class extends React.Component { render() { const {children} = this.props; return (

Expected Result:

{children}

); } }; export default TestCase;