/** @jsxImportSource test */ import { View } from "react-native"; import { registerCSS, render, setupAllComponents } from "test"; const testID = "react-native-css-interop"; setupAllComponents(); describe("parsed", () => { test("translateX percentage", () => { registerCSS(`.my-class { transform: translateX(10%); }`); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ transform: [{ translateX: "10%" }], }); }); test("translateX percentage - with polyfill", () => { registerCSS(`.my-class { width: 120px; transform: translateX(10%); }`, { features: { transformPercentagePolyfill: true, }, }); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ width: 120, transform: [{ translateX: 12 }], }); }); test("translateY percentage", () => { registerCSS(`.my-class { transform: translateY(10%); }`); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ transform: [{ translateY: "10%" }], }); }); test("translateY percentage - with polyfill", () => { registerCSS(`.my-class { height: 120px; transform: translateY(10%); }`, { features: { transformPercentagePolyfill: true, }, }); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ height: 120, transform: [{ translateY: 12 }], }); }); test("rotate-180", () => { registerCSS(`.my-class { transform: rotate(180deg); }`); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ transform: [{ rotate: "180deg" }], }); }); test("rotate-45", () => { registerCSS(` * { --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0deg; --tw-skew-x: 0deg; --tw-skew-y: 0deg; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; } .rotate-45 { --tw-rotate: 45deg; transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)) }`); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ transform: [ { translateX: 0 }, { translateY: 0 }, { rotate: "45deg" }, { skewX: "0deg" }, { skewY: "0deg" }, { scaleX: 1 }, { scaleY: 1 }, ], }); }); }); describe("unparsed", () => { test("translateX percentage", () => { registerCSS( `.my-class { transform: var(--test); --test: translateX(20%) }`, ); const component = render( , ).getByTestId(testID); expect(component).toHaveStyle({ transform: [{ translateX: "20%" }], }); }); });