screenAtRule.test.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import postcss from 'postcss'
  2. import plugin from '../src/lib/substituteScreenAtRules'
  3. import config from '../stubs/config.full.js'
  4. import { css } from './util/run'
  5. function run(input, opts = config) {
  6. return postcss([plugin({ tailwindConfig: opts })]).process(input, { from: undefined })
  7. }
  8. test('it can generate media queries from configured screen sizes', () => {
  9. let input = css`
  10. @screen sm {
  11. .banana {
  12. color: yellow;
  13. }
  14. }
  15. @screen md {
  16. .banana {
  17. color: red;
  18. }
  19. }
  20. @screen lg {
  21. .banana {
  22. color: green;
  23. }
  24. }
  25. `
  26. return run(input, {
  27. theme: {
  28. screens: {
  29. sm: '500px',
  30. md: '750px',
  31. lg: '1000px',
  32. },
  33. },
  34. separator: ':',
  35. }).then((result) => {
  36. expect(result.css).toMatchFormattedCss(css`
  37. @media (min-width: 500px) {
  38. .banana {
  39. color: yellow;
  40. }
  41. }
  42. @media (min-width: 750px) {
  43. .banana {
  44. color: red;
  45. }
  46. }
  47. @media (min-width: 1000px) {
  48. .banana {
  49. color: green;
  50. }
  51. }
  52. `)
  53. expect(result.warnings().length).toBe(0)
  54. })
  55. })