import { run, html, css, defaults } from './util/run' test('important selector', () => { let config = { important: '#app', darkMode: 'class', content: [ { raw: html`
`, }, ], corePlugins: { preflight: false }, plugins: [ function ({ addComponents, addUtilities }) { addComponents( { '.btn': { button: 'yes', }, }, { respectImportant: true } ) addComponents( { '@font-face': { 'font-family': 'Inter', }, '@page': { margin: '1cm', }, }, { respectImportant: true } ) addUtilities( { '.custom-util': { button: 'no', }, }, { respectImportant: false } ) }, ], } let input = css` @tailwind base; @tailwind components; @layer components { .custom-component { @apply font-bold; } .custom-important-component { @apply text-center !important; } } @tailwind utilities; ` return run(input, config).then((result) => { expect(result.css).toMatchFormattedCss(css` ${defaults} .container { width: 100%; } @media (min-width: 640px) { .container { max-width: 640px; } } @media (min-width: 768px) { .container { max-width: 768px; } } @media (min-width: 1024px) { .container { max-width: 1024px; } } @media (min-width: 1280px) { .container { max-width: 1280px; } } @media (min-width: 1536px) { .container { max-width: 1536px; } } #app .btn { button: yes; } @font-face { font-family: Inter; } @page { margin: 1cm; } .custom-component { font-weight: 700; } .custom-important-component { text-align: center !important; } @keyframes spin { to { transform: rotate(360deg); } } #app .animate-spin { animation: 1s linear infinite spin; } #app .font-bold { font-weight: 700; } .custom-util { button: no; } #app :is(.group:hover .group-hover\:focus-within\:text-left:focus-within) { text-align: left; } #app :is([dir='rtl'] .rtl\:active\:text-center:active) { text-align: center; } @media (prefers-reduced-motion: no-preference) { #app .motion-safe\:hover\:text-center:hover { text-align: center; } } #app :is(.dark .dark\:before\:underline):before { content: var(--tw-content); text-decoration-line: underline; } #app :is(.dark .dark\:focus\:text-left:focus) { text-align: left; } @media (min-width: 768px) { #app .md\:hover\:text-right:hover { text-align: right; } } #app :-webkit-any( [dir='rtl'] :-webkit-any(.dark .hover\:\[\&\:\:file-selector-button\]\:rtl\:dark\:bg-black\/100) )::-webkit-file-upload-button:hover { background-color: #000; } #app :is( [dir='rtl'] :is(.dark .hover\:\[\&\:\:file-selector-button\]\:rtl\:dark\:bg-black\/100) )::file-selector-button:hover { background-color: #000; } `) }) }) test('pseudo-elements are appended after the `:-webkit-any()`', () => { let config = { important: '#app', darkMode: 'class', content: [ { raw: html` `, }, ], corePlugins: { preflight: false }, } let input = css` @tailwind base; @tailwind components; @tailwind utilities; ` return run(input, config).then((result) => { expect(result.css).toMatchFormattedCss(css` ${defaults} #app :is(.dark .dark\:before\:flex):before { content: var(--tw-content); display: flex; } `) }) })