From 591817c72efa7a36108aa8cff341154324a96c75 Mon Sep 17 00:00:00 2001 From: Marcel Halpert <> Date: Wed, 21 Feb 2018 01:16:20 +1100 Subject: [PATCH] feat(validAttr): add controlsList to validAttr list --- CHANGELOG.md | 2 ++ src/utils/test/validAttr.test.js | 1 + src/utils/validAttr.js | 4 ++-- test-results.json | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d7060df8..3fd9c2a23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to this project will be documented in this file. If a contri ## Unreleased +- Add `controlsList` to validAttr list (see [#1537](https://github.com/styled-components/styled-components/pull/1537)) + - Enable stylis' semicolon autocompletion which was accidentally disabled for a lot of prior releases (see [#1532](https://github.com/styled-components/styled-components/pull/1532)) - Fix `insertRule` injection (speedy mode in production) of nested media queries by upgrading stylis-rule-sheet (see [#1529](https://github.com/styled-components/styled-components/pull/1529) and [#1528](https://github.com/styled-components/styled-components/pull/1528)) diff --git a/src/utils/test/validAttr.test.js b/src/utils/test/validAttr.test.js index 032a868a2..c97251e56 100644 --- a/src/utils/test/validAttr.test.js +++ b/src/utils/test/validAttr.test.js @@ -44,6 +44,7 @@ describe('validAttr', () => { expect(validAttr('contentEditable')).toEqual(true) expect(validAttr('contextMenu')).toEqual(true) expect(validAttr('controls')).toEqual(true) + expect(validAttr('controlsList')).toEqual(true) expect(validAttr('coords')).toEqual(true) expect(validAttr('crossOrigin')).toEqual(true) expect(validAttr('data')).toEqual(true) diff --git a/src/utils/validAttr.js b/src/utils/validAttr.js index 33d8d9864..de1c81a6d 100644 --- a/src/utils/validAttr.js +++ b/src/utils/validAttr.js @@ -12,11 +12,11 @@ * and no false positives from partials **/ /* -children dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan +children dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controlsList controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan */ /* eslint-enable max-len */ -const ATTRIBUTE_REGEX = /^((?:s(?:uppressContentEditableWarn|croll|pac)|(?:shape|image|text)Render|(?:letter|word)Spac|vHang|hang)ing|(?:on(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)Captur|alignmentBaselin|(?:limitingConeAng|xlink(?:(?:Arcr|R)o|Tit)|s(?:urfaceSca|ty|ca)|unselectab|baseProfi|fontSty|(?:focus|dragg)ab|multip|profi|tit)l|d(?:ominantBaselin|efaultValu)|a(?:uto(?:Capitaliz|Revers|Sav)|dditiv)|(?:(?:formNoValid|xlinkActu|noValid|accumul|rot)a|autoComple|decelera)t|(?:(?:attribute|item)T|datat)yp|(?:attribute|glyph)Nam|playsInlin|(?:formE|e)ncTyp|(?:writing|input|edge)Mod|(?:xlinkTy|itemSco|keyTy|slo)p|(?:amplitu|mo)d|(?:xmlSpa|non)c|fillRul|(?:dateTi|na)m|r(?:esourc|ol)|xmlBas|wmod)e|(?:glyphOrientationHorizont|loc)al|(?:externalResourcesRequir|select|revers|mut)ed|c(?:o(?:lorInterpolationFilter|ntrol|ord)s|o(?:lor(?:Interpolation)?|ntent)|(?:ontentS(?:cript|tyle)Typ|o(?:ntentEditab|lorProfi)l|l(?:assNam|ipRul)|a(?:lcMod|ptur)|it)e|olorRendering|l(?:ipPathUnits|assID)|o(?:ntextMenu|ls)|h(?:eckedLink|a(?:llenge|rSet)|ildren|ecked)|ell(?:Spac|Padd)ing|(?:rossOrigi|olSpa)n|apHeight|lip(?:Path)?|ursor|[xy])|glyphOrientationVertical|d(?:angerouslySetInnerHTML|efaultChecked|ownload|isabled|isplay|[xy])|(?:s(?:trikethroughThickn|eaml)es|(?:und|ov)erlineThicknes|r(?:equiredExtension|adiu)|(?:requiredFeatur|tableValu|stitchTil|numOctav|filterR)e|key(?:(?:Splin|Tim)e|Param)|autoFocu|header|bia)s|(?:(?:st(?:rikethroughPosi|dDevia)|(?:und|ov)erlinePosi|(?:textDecor|elev)a|orienta)tio|(?:strokeLinejo|orig)i|formActio|zoomAndPa|onFocusI|directio|(?:vers|act)io|rowSpa|begi|ico)n|o(?:n(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)|rient)|p(?:reserveA(?:spectRatio|lpha)|ointsAt[X-Z]|anose1)|(?:patternContent|ma(?:sk(?:Content)?|rker)|primitive|gradient|pattern|filter)Units|(?:gradientT|patternT|t)ransform|(?:(?:allowTranspar|baseFrequ)enc|re(?:ferrerPolic|adOnl)|(?:(?:st(?:roke|op)O|floodO|fillO|o)pac|integr|secur)it|visibilit|fontFamil|accessKe|propert|summar)y|(?:strokeMiterlimi|(?:specularConsta|repeatCou|fontVaria)n|(?:(?:specularE|e)xpon|renderingInt|asc)en|d(?:iffuseConsta|esce)n|(?:fontSizeAdju|lengthAdju|manife)s|baselineShif|vectorEffec|(?:(?:mar(?:ker|gin)|x)H|accentH|fontW)eigh|a(?:utoCorrec|bou)|markerStar|onFocusOu|in(?:tercep|lis)|restar|forma|heigh|lis)t|(?:(?:st(?:rokeDasho|artO)|o)ffs|acceptChars|formTarg|viewTarg|srcS)et|(?:(?:enableBackgrou|markerE)n|s(?:p(?:readMetho|ee)|ee)|formMetho|m(?:arkerMi|etho)|preloa|kin)d|k(?:ernel(?:UnitLength|Matrix)|[1-4])|(?:[xy]ChannelSelect|lightingCol|textAnch|floodCol|stopCol|operat|htmlF)or|(?:allowFullScre|hidd)en|strokeDasharray|systemLanguage|(?:strokeLineca|itemPro|useMa|wra|loo)p|v(?:Mathematical|ert(?:Origin[XY]|AdvY)|alues|ocab)|(?:pointerEve|keyPoi)nts|unicodeRange|(?:(?:allowReord|placehold|frameBord|paintOrd|post|ord)e|repeatDu|d(?:efe|u))r|mathematical|(?:vI|i)deographic|h(?:oriz(?:Origin|Adv)X|ttpEquiv)|u(?:nicodeBidi|[12])|(?:fontStretc|hig)h|(?:(?:mar(?:ker|gin)W|strokeW)id|azimu)th|vAlphabetic|mediaGroup|spellCheck|(?:unitsPerE|optimu|fro)m|r(?:adioGroup|e(?:sults|f[XY]|l)|ows|[xy])|(?:xmlnsXl|valueL)ink|a(?:rabicForm|l(?:phabetic|t)|sync)|pathLength|(?:text|m(?:in|ax))Length|innerHTML|xlinkShow|(?:xlinkHr|glyphR)ef|r(?:e(?:quired|sult|f))?|o(?:verflow|pen)|(?:tabInde|(?:sand|b)bo|viewBo)x|(?:(?:href|xml|src)La|kerni)ng|f(?:o(?:ntSize|rm)|il(?:ter|l))|autoPlay|unicode|p(?:attern|oints)|t(?:arget[XY]|o)|i(?:temRef|n2|s)|divisor|d(?:efault|ata|ir)?|srcDoc|s(?:coped|te(?:m[hv]|p)|pan)|(?:width|size)s|(?:stri|la)ng|prefix|itemID|s(?:t(?:roke|art)|hape|cope|rc)|a(?:ccept|s)|t(?:arget|ype)|typeof|width|value|x(?:mlns)?|label|m(?:edia|a(?:sk|x)|in)|size|href|k(?:ey)?|end|low|x[12]|i[dn]|y[12]|g[12]|by|f[xy]|[yz])$/ +const ATTRIBUTE_REGEX = /^((?:s(?:uppressContentEditableWarn|croll|pac)|(?:shape|image|text)Render|(?:letter|word)Spac|vHang|hang)ing|(?:on(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)Captur|alignmentBaselin|(?:limitingConeAng|xlink(?:(?:Arcr|R)o|Tit)|s(?:urfaceSca|ty|ca)|unselectab|baseProfi|fontSty|(?:focus|dragg)ab|multip|profi|tit)l|d(?:ominantBaselin|efaultValu)|a(?:uto(?:Capitaliz|Revers|Sav)|dditiv)|(?:(?:formNoValid|xlinkActu|noValid|accumul|rot)a|autoComple|decelera)t|(?:(?:attribute|item)T|datat)yp|(?:attribute|glyph)Nam|playsInlin|(?:formE|e)ncTyp|(?:writing|input|edge)Mod|(?:xlinkTy|itemSco|keyTy|slo)p|(?:amplitu|mo)d|(?:xmlSpa|non)c|fillRul|(?:dateTi|na)m|r(?:esourc|ol)|xmlBas|wmod)e|(?:glyphOrientationHorizont|loc)al|(?:externalResourcesRequir|select|revers|mut)ed|c(?:o(?:lorInterpolationFilter|ord)s|o(?:lor(?:Interpolation)?|nt(?:rols|ent))|(?:ontentS(?:cript|tyle)Typ|o(?:ntentEditab|lorProfi)l|l(?:assNam|ipRul)|a(?:lcMod|ptur)|it)e|olorRendering|l(?:ipPathUnits|assID)|(?:ontrolsLis|apHeigh)t|h(?:eckedLink|a(?:llenge|rSet)|ildren|ecked)|ell(?:Spac|Padd)ing|o(?:ntextMenu|ls)|(?:rossOrigi|olSpa)n|lip(?:Path)?|ursor|[xy])|glyphOrientationVertical|d(?:angerouslySetInnerHTML|efaultChecked|ownload|isabled|isplay|[xy])|(?:s(?:trikethroughThickn|eaml)es|(?:und|ov)erlineThicknes|r(?:equiredExtension|adiu)|(?:requiredFeatur|tableValu|stitchTil|numOctav|filterR)e|key(?:(?:Splin|Tim)e|Param)|autoFocu|header|bia)s|(?:(?:st(?:rikethroughPosi|dDevia)|(?:und|ov)erlinePosi|(?:textDecor|elev)a|orienta)tio|(?:strokeLinejo|orig)i|formActio|zoomAndPa|onFocusI|directio|(?:vers|act)io|rowSpa|begi|ico)n|o(?:n(?:AnimationIteration|C(?:o(?:mposition(?:Update|Start|End)|ntextMenu|py)|anPlayThrough|anPlay|hange|lick|ut)|(?:(?:Duration|Volume|Rate)Chang|(?:MouseLea|(?:Touch|Mouse)Mo|DragLea)v|Paus)e|Loaded(?:Metad|D)ata|(?:Animation|Touch|Load|Drag)Start|(?:(?:T(?:ransition|ouch)|Animation)E|Suspe)nd|DoubleClick|(?:TouchCanc|Whe)el|(?:Mouse(?:Ent|Ov)e|Drag(?:Ent|Ov)e|Erro)r|TimeUpdate|(?:E(?:n(?:crypt|d)|mpti)|S(?:tall|eek))ed|MouseDown|P(?:rogress|laying)|(?:MouseOu|DragExi|S(?:elec|ubmi)|Rese|Inpu)t|KeyPress|DragEnd|Key(?:Down|Up)|(?:Wait|Seek)ing|(?:MouseU|Dro)p|Scroll|Paste|Focus|Abort|Drag|Play|Load|Blur)|rient)|p(?:reserveA(?:spectRatio|lpha)|ointsAt[X-Z]|anose1)|(?:patternContent|ma(?:sk(?:Content)?|rker)|primitive|gradient|pattern|filter)Units|(?:gradientT|patternT|t)ransform|(?:(?:allowTranspar|baseFrequ)enc|re(?:ferrerPolic|adOnl)|(?:(?:st(?:roke|op)O|floodO|fillO|o)pac|integr|secur)it|visibilit|fontFamil|accessKe|propert|summar)y|(?:strokeMiterlimi|(?:specularConsta|repeatCou|fontVaria)n|(?:(?:specularE|e)xpon|renderingInt|asc)en|d(?:iffuseConsta|esce)n|(?:fontSizeAdju|lengthAdju|manife)s|baselineShif|vectorEffec|(?:(?:mar(?:ker|gin)|x)H|accentH|fontW)eigh|a(?:utoCorrec|bou)|markerStar|onFocusOu|intercep|restar|forma|inlis|heigh|lis)t|(?:(?:st(?:rokeDasho|artO)|o)ffs|acceptChars|formTarg|viewTarg|srcS)et|(?:(?:enableBackgrou|markerE)n|s(?:p(?:readMetho|ee)|ee)|formMetho|m(?:arkerMi|etho)|preloa|kin)d|k(?:ernel(?:UnitLength|Matrix)|[1-4])|(?:[xy]ChannelSelect|lightingCol|textAnch|floodCol|stopCol|operat|htmlF)or|(?:allowFullScre|hidd)en|strokeDasharray|systemLanguage|(?:strokeLineca|itemPro|useMa|wra|loo)p|v(?:Mathematical|ert(?:Origin[XY]|AdvY)|alues|ocab)|(?:pointerEve|keyPoi)nts|unicodeRange|(?:(?:allowReord|placehold|frameBord|paintOrd|post|ord)e|repeatDu|d(?:efe|u))r|mathematical|(?:vI|i)deographic|h(?:oriz(?:Origin|Adv)X|ttpEquiv)|u(?:nicodeBidi|[12])|(?:fontStretc|hig)h|(?:(?:mar(?:ker|gin)W|strokeW)id|azimu)th|vAlphabetic|mediaGroup|spellCheck|(?:unitsPerE|optimu|fro)m|r(?:adioGroup|e(?:sults|f[XY]|l)|ows|[xy])|(?:xmlnsXl|valueL)ink|a(?:rabicForm|l(?:phabetic|t)|sync)|pathLength|(?:text|m(?:in|ax))Length|innerHTML|xlinkShow|(?:xlinkHr|glyphR)ef|r(?:e(?:quired|sult|f))?|o(?:verflow|pen)|(?:tabInde|(?:sand|b)bo|viewBo)x|(?:(?:href|xml|src)La|kerni)ng|f(?:o(?:ntSize|rm)|il(?:ter|l))|autoPlay|unicode|p(?:attern|oints)|t(?:arget[XY]|o)|i(?:temRef|n2|s)|divisor|d(?:efault|ata|ir)?|srcDoc|s(?:coped|te(?:m[hv]|p)|pan)|(?:width|size)s|(?:stri|la)ng|prefix|itemID|s(?:t(?:roke|art)|hape|cope|rc)|a(?:ccept|s)|t(?:arget|ype)|typeof|width|value|x(?:mlns)?|label|m(?:edia|a(?:sk|x)|in)|size|href|k(?:ey)?|end|low|x[12]|i[dn]|y[12]|g[12]|by|f[xy]|[yz])$/ /* From DOMProperty */ const ATTRIBUTE_NAME_START_CHAR = diff --git a/test-results.json b/test-results.json index bf0a61e92..58b0addbb 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":30,"numPassedTests":219,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":30,"numTotalTests":219,"snapshot":{"added":0,"didUpdate":true,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":24,"total":24,"unchecked":0,"unmatched":0,"updated":0},"startTime":1519042254088,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1519042256102,"message":"","name":"/Users/phil/Development/styled-components/src/test/ssr.test.js","startTime":1519042255373,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1519042256984,"message":"","name":"/Users/phil/Development/styled-components/src/test/styles.test.js","startTime":1519042256459,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1519042257027,"message":"","name":"/Users/phil/Development/styled-components/src/test/warnTooManyClasses.test.js","startTime":1519042256403,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1519042257130,"message":"","name":"/Users/phil/Development/styled-components/src/constructors/test/keyframes.test.js","startTime":1519042257089,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1519042257161,"message":"","name":"/Users/phil/Development/styled-components/src/no-parser/test/keyframes.test.js","startTime":1519042257126,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1519042257230,"message":"","name":"/Users/phil/Development/styled-components/src/test/theme.test.js","startTime":1519042257023,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1519042257331,"message":"","name":"/Users/phil/Development/styled-components/src/test/attrs.test.js","startTime":1519042257255,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1519042257402,"message":"","name":"/Users/phil/Development/styled-components/src/test/rehydration.test.js","startTime":1519042257264,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"}],"endTime":1519042257409,"message":"","name":"/Users/phil/Development/styled-components/src/test/basic.test.js","startTime":1519042257327,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1519042257540,"message":"","name":"/Users/phil/Development/styled-components/src/test/extending.test.js","startTime":1519042257467,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1519042257555,"message":"","name":"/Users/phil/Development/styled-components/src/models/test/ThemeProvider.test.js","startTime":1519042257501,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"}],"endTime":1519042257566,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/validAttr.test.js","startTime":1519042257487,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"}],"endTime":1519042257688,"message":"","name":"/Users/phil/Development/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1519042257652,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1519042257715,"message":"","name":"/Users/phil/Development/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1519042257629,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1519042257726,"message":"","name":"/Users/phil/Development/styled-components/src/test/expanded-api.test.js","startTime":1519042257663,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1519042257838,"message":"","name":"/Users/phil/Development/styled-components/src/no-parser/test/flatten.test.js","startTime":1519042257806,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1519042257867,"message":"","name":"/Users/phil/Development/styled-components/src/constructors/test/styled.test.js","startTime":1519042257803,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1519042257878,"message":"","name":"/Users/phil/Development/styled-components/src/test/css.test.js","startTime":1519042257832,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1519042257974,"message":"","name":"/Users/phil/Development/styled-components/src/no-parser/test/basic.test.js","startTime":1519042257930,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1519042257992,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/flatten.test.js","startTime":1519042257952,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1519042258003,"message":"","name":"/Users/phil/Development/styled-components/src/test/overriding.test.js","startTime":1519042257963,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1519042258130,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/styleNames.test.js","startTime":1519042258088,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1519042258134,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/getComponentName.test.js","startTime":1519042258102,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1519042258150,"message":"","name":"/Users/phil/Development/styled-components/src/test/staticCaching.test.js","startTime":1519042258106,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1519042258278,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/interleave.test.js","startTime":1519042258253,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1519042258278,"message":"","name":"/Users/phil/Development/styled-components/src/test/props.test.js","startTime":1519042258241,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1519042258297,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/escape.test.js","startTime":1519042258275,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1519042258386,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1519042258366,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1519042258402,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/determineTheme.test.js","startTime":1519042258387,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1519042258416,"message":"","name":"/Users/phil/Development/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1519042258399,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":30,"numPassedTests":219,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":30,"numTotalTests":219,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":24,"total":24,"unchecked":0,"unmatched":0,"updated":0},"startTime":1519138234187,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1519138237104,"message":"","name":"/Users/marcel/web/styled-components/src/test/rehydration.test.js","startTime":1519138236420,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1519138237133,"message":"","name":"/Users/marcel/web/styled-components/src/test/theme.test.js","startTime":1519138236419,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1519138237139,"message":"","name":"/Users/marcel/web/styled-components/src/test/warnTooManyClasses.test.js","startTime":1519138236434,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"}],"endTime":1519138237771,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/validAttr.test.js","startTime":1519138237573,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1519138237843,"message":"","name":"/Users/marcel/web/styled-components/src/test/styles.test.js","startTime":1519138237602,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1519138237865,"message":"","name":"/Users/marcel/web/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1519138237580,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1519138238377,"message":"","name":"/Users/marcel/web/styled-components/src/test/extending.test.js","startTime":1519138238134,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1519138238411,"message":"","name":"/Users/marcel/web/styled-components/src/test/expanded-api.test.js","startTime":1519138238186,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"}],"endTime":1519138238429,"message":"","name":"/Users/marcel/web/styled-components/src/test/basic.test.js","startTime":1519138238199,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1519138238906,"message":"","name":"/Users/marcel/web/styled-components/src/test/css.test.js","startTime":1519138238728,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1519138238970,"message":"","name":"/Users/marcel/web/styled-components/src/models/test/ThemeProvider.test.js","startTime":1519138238770,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1519138238982,"message":"","name":"/Users/marcel/web/styled-components/src/test/ssr.test.js","startTime":1519138238754,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1519138239510,"message":"","name":"/Users/marcel/web/styled-components/src/test/props.test.js","startTime":1519138239332,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1519138239511,"message":"","name":"/Users/marcel/web/styled-components/src/test/attrs.test.js","startTime":1519138239299,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1519138239553,"message":"","name":"/Users/marcel/web/styled-components/src/test/staticCaching.test.js","startTime":1519138239354,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"}],"endTime":1519138240037,"message":"","name":"/Users/marcel/web/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1519138239857,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1519138240039,"message":"","name":"/Users/marcel/web/styled-components/src/constructors/test/styled.test.js","startTime":1519138239854,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1519138240055,"message":"","name":"/Users/marcel/web/styled-components/src/no-parser/test/flatten.test.js","startTime":1519138239886,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1519138240526,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1519138240379,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1519138240542,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1519138240393,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1519138240544,"message":"","name":"/Users/marcel/web/styled-components/src/no-parser/test/basic.test.js","startTime":1519138240362,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1519138241001,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/interleave.test.js","startTime":1519138240860,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1519138241007,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/escape.test.js","startTime":1519138240867,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1519138241037,"message":"","name":"/Users/marcel/web/styled-components/src/test/overriding.test.js","startTime":1519138240872,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1519138241518,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/flatten.test.js","startTime":1519138241354,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1519138241543,"message":"","name":"/Users/marcel/web/styled-components/src/no-parser/test/keyframes.test.js","startTime":1519138241375,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1519138241569,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/styleNames.test.js","startTime":1519138241404,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1519138242008,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/determineTheme.test.js","startTime":1519138241874,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1519138242033,"message":"","name":"/Users/marcel/web/styled-components/src/utils/test/getComponentName.test.js","startTime":1519138241900,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1519138242154,"message":"","name":"/Users/marcel/web/styled-components/src/constructors/test/keyframes.test.js","startTime":1519138242019,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file