How to use testAnimationSampleMatrices method in wpt

Best JavaScript code snippet using wpt

property-types.js

Source:property-types.js Github

copy

Full Screen

...731 [idlName]: ['translate(200px, -200px)', 'translate(400px, 400px)'],732 },733 1000734 );735 testAnimationSampleMatrices(animation, idlName,736 [{ time: 500, expected: [ 1, 0, 0, 1, 300, 100 ] }]);737 }, `${property}: translate`);738 test(t => {739 const idlName = propertyToIDL(property);740 const target = createTestElement(t, setup);741 const animation = target.animate(742 {743 [idlName]: ['rotate(45deg)', 'rotate(135deg)'],744 },745 1000746 );747 testAnimationSampleMatrices(animation, idlName,748 [{ time: 500, expected: [ Math.cos(Math.PI / 2),749 Math.sin(Math.PI / 2),750 -Math.sin(Math.PI / 2),751 Math.cos(Math.PI / 2),752 0, 0] }]);753 }, `${property}: rotate`);754 test(t => {755 const idlName = propertyToIDL(property);756 const target = createTestElement(t, setup);757 const animation = target.animate({ [idlName]: ['scale(3)', 'scale(5)'] },758 1000);759 testAnimationSampleMatrices(animation, idlName,760 [{ time: 500, expected: [ 4, 0, 0, 4, 0, 0 ] }]);761 }, `${property}: scale`);762 test(t => {763 const idlName = propertyToIDL(property);764 const target = createTestElement(t, setup);765 const animation = target.animate({ [idlName]: ['skew(30deg, 60deg)',766 'skew(60deg, 30deg)'] },767 1000);768 testAnimationSampleMatrices(animation, idlName,769 [{ time: 500, expected: [ 1, Math.tan(Math.PI / 4),770 Math.tan(Math.PI / 4), 1,771 0, 0] }]);772 }, `${property}: skew`);773 test(t => {774 const idlName = propertyToIDL(property);775 const target = createTestElement(t, setup);776 const animation =777 target.animate({ [idlName]: ['translateX(100px) rotate(45deg)',778 'translateX(200px) rotate(135deg)'] },779 1000);780 testAnimationSampleMatrices(animation, idlName,781 [{ time: 500, expected: [ Math.cos(Math.PI / 2),782 Math.sin(Math.PI / 2),783 -Math.sin(Math.PI / 2),784 Math.cos(Math.PI / 2),785 150, 0 ] }]);786 }, `${property}: rotate and translate`);787 test(t => {788 const idlName = propertyToIDL(property);789 const target = createTestElement(t, setup);790 const animation =791 target.animate({ [idlName]: ['rotate(45deg) translateX(100px)',792 'rotate(135deg) translateX(200px)'] },793 1000);794 testAnimationSampleMatrices(animation, idlName,795 [{ time: 500, expected: [ Math.cos(Math.PI / 2),796 Math.sin(Math.PI / 2),797 -Math.sin(Math.PI / 2),798 Math.cos(Math.PI / 2),799 150 * Math.cos(Math.PI / 2),800 150 * Math.sin(Math.PI / 2) ] }]);801 }, `${property}: translate and rotate`);802 test(t => {803 const idlName = propertyToIDL(property);804 const target = createTestElement(t, setup);805 const animation =806 target.animate({ [idlName]: ['rotate(0deg)',807 'rotate(1080deg) translateX(100px)'] },808 1000);809 testAnimationSampleMatrices(animation, idlName,810 [{ time: 500, expected: [ -1, 0, 0, -1, -50, 0 ] }]);811 }, `${property}: extend shorter list (from)`);812 test(t => {813 const idlName = propertyToIDL(property);814 const target = createTestElement(t, setup);815 const animation =816 target.animate({ [idlName]: ['rotate(0deg) translateX(100px)',817 'rotate(1080deg)'] },818 1000);819 testAnimationSampleMatrices(animation, idlName,820 [{ time: 500, expected: [ -1, 0, 0, -1, -50, 0 ] }]);821 }, `${property}: extend shorter list (to)`);822 test(t => {823 const idlName = propertyToIDL(property);824 const target = createTestElement(t, setup);825 const animation = // matrix(0, 1, -1, 0, 0, 100)826 target.animate({ [idlName]: ['rotate(90deg) translateX(100px)',827 // matrix(-1, 0, 0, -1, 200, 0)828 'translateX(200px) rotate(180deg)'] },829 1000);830 testAnimationSampleMatrices(animation, idlName,831 [{ time: 500, expected: [ Math.cos(Math.PI * 3 / 4),832 Math.sin(Math.PI * 3 / 4),833 -Math.sin(Math.PI * 3 / 4),834 Math.cos(Math.PI * 3 / 4),835 100, 50 ] }]);836 }, `${property}: mismatch order of translate and rotate`);837 test(t => {838 const idlName = propertyToIDL(property);839 const target = createTestElement(t, setup);840 const animation = // Same matrices as above.841 target.animate({ [idlName]: [ 'matrix(0, 1, -1, 0, 0, 100)',842 'matrix(-1, 0, 0, -1, 200, 0)' ] },843 1000);844 testAnimationSampleMatrices(animation, idlName,845 [{ time: 500, expected: [ Math.cos(Math.PI * 3 / 4),846 Math.sin(Math.PI * 3 / 4),847 -Math.sin(Math.PI * 3 / 4),848 Math.cos(Math.PI * 3 / 4),849 100, 50 ] }]);850 }, `${property}: matrix`);851 test(t => {852 const idlName = propertyToIDL(property);853 const target = createTestElement(t, setup);854 const animation =855 target.animate({ [idlName]: [ 'rotate3d(1, 1, 0, 0deg)',856 'rotate3d(1, 1, 0, 90deg)'] },857 1000);858 testAnimationSampleMatrices(animation, idlName,859 [{ time: 500, expected: rotate3dToMatrix(1, 1, 0, Math.PI / 4) }]);860 }, `${property}: rotate3d`);861 test(t => {862 const idlName = propertyToIDL(property);863 const target = createTestElement(t, setup);864 // To calculate expected matrices easily, generate input matrices from865 // rotate3d.866 const from = rotate3dToMatrix3d(1, 1, 0, Math.PI / 4);867 const to = rotate3dToMatrix3d(1, 1, 0, Math.PI * 3 / 4);868 const animation = target.animate({ [idlName]: [ from, to ] }, 1000);869 testAnimationSampleMatrices(animation, idlName,870 [{ time: 500, expected: rotate3dToMatrix(1, 1, 0, Math.PI * 2 / 4) }]);871 }, `${property}: matrix3d`);872 // This test aims for forcing the two mismatched transforms to be873 // decomposed into matrix3d before interpolation. Therefore, we not only874 // test the interpolation, but also test the 3D matrix decomposition.875 test(t => {876 const idlName = propertyToIDL(property);877 const target = createTestElement(t, setup);878 const animation = target.animate(879 {880 [idlName]: [881 'scale(0.3)',882 // scale(0.5) translateZ(1px)883 'matrix3d(0.5, 0, 0, 0, 0, 0.5, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1)',884 ],885 },886 1000887 );888 testAnimationSampleMatrices(animation, idlName,889 [{ time: 500, expected: [ 0.4, 0, 0, 0,890 0, 0.4, 0, 0,891 0, 0, 1, 0,892 0, 0, 0.5, 1] }]);893 }, `${property}: mismatched 3D transforms`);894 test(t => {895 const idlName = propertyToIDL(property);896 const target = createTestElement(t, setup);897 const animation =898 target.animate({ [idlName]: ['rotateY(60deg)', 'none' ] }, 1000);899 testAnimationSampleMatrices(animation, idlName,900 // rotateY(30deg) == rotate3D(0, 1, 0, 30deg)901 [{ time: 500, expected: rotate3dToMatrix(0, 1, 0, Math.PI / 6) }]);902 }, `${property}: rotateY`);903 // Following tests aim for test the fallback discrete interpolation behavior904 // for non-invertible matrices. The non-invertible matrix that we use is the905 // singular matrix, matrix(1, 1, 0, 0, 0, 100).906 test(t => {907 const idlName = propertyToIDL(property);908 const target = createTestElement(t, setup);909 const animation =910 target.animate({ [idlName]: ['matrix(-1, 0, 0, -1, 200, 0)',911 'matrix( 1, 1, 0, 0, 0, 100)'] },912 { duration: 1000, fill: 'both' });913 testAnimationSampleMatrices(animation, idlName,914 [ { time: 0, expected: [ -1, 0, 0, -1, 200, 0 ] },915 { time: 499, expected: [ -1, 0, 0, -1, 200, 0 ] },916 { time: 500, expected: [ 1, 1, 0, 0, 0, 100 ] },917 { time: 1000, expected: [ 1, 1, 0, 0, 0, 100 ] }]);918 }, `${property}: non-invertible matrices`);919 test(t => {920 const idlName = propertyToIDL(property);921 const target = createTestElement(t, setup);922 const animation = target.animate(923 {924 [idlName]: [925 // matrix(0, -1, 1, 0, 250, 0)926 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) rotate(90deg)',927 // matrix(-1, -1, 0, 0, 100, 100)928 'translate(100px) matrix( 1, 1, 0, 0, 0, 100) rotate(180deg)',929 ],930 },931 { duration: 1000, fill: 'both' }932 );933 testAnimationSampleMatrices(animation, idlName,934 [ { time: 0, expected: [ 0, -1, 1, 0, 250, 0 ] },935 { time: 499, expected: [ 0, -1, 1, 0, 250, 0 ] },936 { time: 500, expected: [ -1, -1, 0, 0, 100, 100 ] },937 { time: 1000, expected: [ -1, -1, 0, 0, 100, 100 ] }]);938 }, `${property}: non-invertible matrices in matched transform lists`);939 test(t => {940 const idlName = propertyToIDL(property);941 const target = createTestElement(t, setup);942 const animation = target.animate(943 {944 [idlName]: [945 // matrix(-2, 0, 0, -2, 250, 0)946 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) scale(2)',947 // matrix(1, 1, 1, 1, 100, 100)948 'translate(100px) matrix( 1, 1, 0, 0, 0, 100) skew(45deg)',949 ],950 },951 { duration: 1000, fill: 'both' }952 );953 testAnimationSampleMatrices(animation, idlName,954 [ { time: 0, expected: [ -2, 0, 0, -2, 250, 0 ] },955 { time: 499, expected: [ -2, 0, 0, -2, 250, 0 ] },956 { time: 500, expected: [ 1, 1, 1, 1, 100, 100 ] },957 { time: 1000, expected: [ 1, 1, 1, 1, 100, 100 ] }]);958 }, `${property}: non-invertible matrices in mismatched transform lists`);959 test(t => {960 const idlName = propertyToIDL(property);961 const target = createTestElement(t, setup);962 const animation = target.animate(963 {964 // perspective(0) is treated as perspective(1px)965 [idlName]: ['perspective(0)', 'perspective(10px)'],966 },967 1000968 );969 testAnimationSampleMatrices(animation, idlName,970 [{ time: 500, expected: [ 1, 0, 0, 0,971 0, 1, 0, 0,972 0, 0, 1, -0.55,973 0, 0, 0, 1 ] }]);974 }, `${property}: perspective`);975 },976 testAddition: function(property, setup) {977 test(t => {978 const idlName = propertyToIDL(property);979 const target = createTestElement(t, setup);980 target.style[idlName] = 'translateX(100px)';981 const animation = target.animate({ [idlName]: ['translateX(-200px)',982 'translateX(500px)'] },983 { duration: 1000, fill: 'both',984 composite: 'add' });985 testAnimationSampleMatrices(animation, idlName,986 [ { time: 0, expected: [ 1, 0, 0, 1, -100, 0 ] },987 { time: 1000, expected: [ 1, 0, 0, 1, 600, 0 ] }]);988 }, `${property}: translate`);989 test(t => {990 const idlName = propertyToIDL(property);991 const target = createTestElement(t, setup);992 target.style[idlName] = 'rotate(45deg)';993 const animation = target.animate({ [idlName]: ['rotate(-90deg)',994 'rotate(90deg)'] },995 { duration: 1000, fill: 'both',996 composite: 'add' });997 testAnimationSampleMatrices(animation, idlName,998 [{ time: 0, expected: [ Math.cos(-Math.PI / 4),999 Math.sin(-Math.PI / 4),1000 -Math.sin(-Math.PI / 4),1001 Math.cos(-Math.PI / 4),1002 0, 0] },1003 { time: 1000, expected: [ Math.cos(Math.PI * 3 / 4),1004 Math.sin(Math.PI * 3 / 4),1005 -Math.sin(Math.PI * 3 / 4),1006 Math.cos(Math.PI * 3 / 4),1007 0, 0] }]);1008 }, `${property}: rotate`);1009 test(t => {1010 const idlName = propertyToIDL(property);1011 const target = createTestElement(t, setup);1012 target.style[idlName] = 'scale(2)';1013 const animation = target.animate({ [idlName]: ['scale(-3)', 'scale(5)'] },1014 { duration: 1000, fill: 'both',1015 composite: 'add' });1016 testAnimationSampleMatrices(animation, idlName,1017 [{ time: 0, expected: [ -6, 0, 0, -6, 0, 0 ] }, // scale(-3) scale(2)1018 { time: 1000, expected: [ 10, 0, 0, 10, 0, 0 ] }]); // scale(5) scale(2)1019 }, `${property}: scale`);1020 test(t => {1021 const idlName = propertyToIDL(property);1022 const target = createTestElement(t, setup);1023 // matrix(1, tan(10deg), tan(10deg), 1)1024 target.style[idlName] = 'skew(10deg, 10deg)';1025 const animation = // matrix(1, tan(20deg), tan(-30deg), 1)1026 target.animate({ [idlName]: ['skew(-30deg, 20deg)',1027 // matrix(1, tan(-30deg), tan(20deg), 1)1028 'skew(20deg, -30deg)'] },1029 { duration: 1000, fill: 'both', composite: 'add' });1030 // matrix at 0%.1031 // [ 1 tan(10deg) ] [ 1 tan(-30deg) ]1032 // [ tan(10deg) 1 ] [ tan(20deg) 1 ] =1033 //1034 // [ 1 + tan(10deg) * tan(20deg) tan(-30deg) + tan(10deg) ]1035 // [ tan(10deg) + tan(20deg) tan(10deg) * tan(-30deg) + 1 ]1036 // matrix at 100%.1037 // [ 1 tan(10deg) ] [ 1 tan(20deg) ]1038 // [ tan(10deg) 1 ] [ tan(-30deg) 1 ] =1039 //1040 // [ 1 + tan(10deg) * tan(-30deg) tan(20deg) + tan(10deg) ]1041 // [ tan(10deg) + tan(-30deg) tan(10deg) * tan(20deg) + 1 ]1042 testAnimationSampleMatrices(animation, idlName,1043 [{ time: 0, expected: [ 1 + Math.tan(Math.PI/18) * Math.tan(Math.PI/9),1044 Math.tan(Math.PI/18) + Math.tan(Math.PI/9),1045 Math.tan(-Math.PI/6) + Math.tan(Math.PI/18),1046 1 + Math.tan(Math.PI/18) * Math.tan(-Math.PI/6),1047 0, 0] },1048 { time: 1000, expected: [ 1 + Math.tan(Math.PI/18) * Math.tan(-Math.PI/6),1049 Math.tan(Math.PI/18) + Math.tan(-Math.PI/6),1050 Math.tan(Math.PI/9) + Math.tan(Math.PI/18),1051 1 + Math.tan(Math.PI/18) * Math.tan(Math.PI/9),1052 0, 0] }]);1053 }, `${property}: skew`);1054 test(t => {1055 const idlName = propertyToIDL(property);1056 const target = createTestElement(t, setup);1057 // matrix(1, 0, 0, 1, 100, 0)1058 target.style[idlName] = 'translateX(100px)';1059 const animation = // matrix(0, 1, -1, 0, 0, 0)1060 target.animate({ [idlName]: ['rotate(90deg)',1061 // matrix(-1, 0, 0, -1, 0, 0)1062 'rotate(180deg)'] },1063 { duration: 1000, fill: 'both', composite: 'add' });1064 testAnimationSampleMatrices(animation, idlName,1065 [{ time: 0, expected: [ 0, 1, -1, 0, 100, 0 ] },1066 { time: 1000, expected: [ -1, 0, 0, -1, 100, 0 ] }]);1067 }, `${property}: rotate on translate`);1068 test(t => {1069 const idlName = propertyToIDL(property);1070 const target = createTestElement(t, setup);1071 // matrix(0, 1, -1, 0, 0, 0)1072 target.style[idlName] = 'rotate(90deg)';1073 const animation = // matrix(1, 0, 0, 1, 100, 0)1074 target.animate({ [idlName]: ['translateX(100px)',1075 // matrix(1, 0, 0, 1, 200, 0)1076 'translateX(200px)'] },1077 { duration: 1000, fill: 'both', composite: 'add' });1078 testAnimationSampleMatrices(animation, idlName,1079 [{ time: 0, expected: [ 0, 1, -1, 0, 0, 100 ] },1080 { time: 1000, expected: [ 0, 1, -1, 0, 0, 200 ] }]);1081 }, `${property}: translate on rotate`);1082 test(t => {1083 const idlName = propertyToIDL(property);1084 const target = createTestElement(t, setup);1085 target.style[idlName] = 'rotate(45deg) translateX(100px)';1086 const animation = target.animate({ [idlName]: ['rotate(-90deg)',1087 'rotate(90deg)'] },1088 { duration: 1000, fill: 'both',1089 composite: 'add' });1090 testAnimationSampleMatrices(animation, idlName,1091 [{ time: 0, expected: [ Math.cos(-Math.PI / 4),1092 Math.sin(-Math.PI / 4),1093 -Math.sin(-Math.PI / 4),1094 Math.cos(-Math.PI / 4),1095 100 * Math.cos(Math.PI / 4),1096 100 * Math.sin(Math.PI / 4) ] },1097 { time: 1000, expected: [ Math.cos(Math.PI * 3 / 4),1098 Math.sin(Math.PI * 3 / 4),1099 -Math.sin(Math.PI * 3 / 4),1100 Math.cos(Math.PI * 3 / 4),1101 100 * Math.cos(Math.PI / 4),1102 100 * Math.sin(Math.PI / 4) ] }]);1103 }, `${property}: rotate on rotate and translate`);1104 test(t => {1105 const idlName = propertyToIDL(property);1106 const target = createTestElement(t, setup);1107 target.style[idlName] = 'matrix(0, 1, -1, 0, 0, 0)';1108 const animation = // Same matrices as above.1109 target.animate({ [idlName]: [ 'matrix(1, 0, 0, 1, 100, 0)',1110 'matrix(1, 0, 0, 1, 200, 0)' ] },1111 { duration: 1000, fill: 'both', composite: 'add' });1112 testAnimationSampleMatrices(animation, idlName,1113 [{ time: 0, expected: [ 0, 1, -1, 0, 0, 100 ] },1114 { time: 1000, expected: [ 0, 1, -1, 0, 0, 200 ] }]);1115 }, `${property}: matrix`);1116 test(t => {1117 const idlName = propertyToIDL(property);1118 const target = createTestElement(t, setup);1119 target.style[idlName] = 'rotate3d(1, 1, 0, 45deg)';1120 const animation =1121 target.animate({ [idlName]: [ 'rotate3d(1, 1, 0, -90deg)',1122 'rotate3d(1, 1, 0, 90deg)'] },1123 { duration: 1000, fill: 'both', composite: 'add' });1124 testAnimationSampleMatrices(animation, idlName,1125 [{ time: 0, expected: rotate3dToMatrix(1, 1, 0, -Math.PI / 4) },1126 { time: 1000, expected: rotate3dToMatrix(1, 1, 0, 3 * Math.PI / 4) }]);1127 }, `${property}: rotate3d`);1128 test(t => {1129 const idlName = propertyToIDL(property);1130 const target = createTestElement(t, setup);1131 // To calculate expected matrices easily, generate input matrices from1132 // rotate3d.1133 target.style[idlName] = rotate3dToMatrix3d(1, 1, 0, Math.PI / 4);1134 const from = rotate3dToMatrix3d(1, 1, 0, -Math.PI / 2);1135 const to = rotate3dToMatrix3d(1, 1, 0, Math.PI / 2);1136 const animation =1137 target.animate({ [idlName]: [ from, to ] },1138 { duration: 1000, fill: 'both', composite: 'add' });1139 testAnimationSampleMatrices(animation, idlName,1140 [{ time: 0, expected: rotate3dToMatrix(1, 1, 0, -Math.PI / 4) },1141 { time: 1000, expected: rotate3dToMatrix(1, 1, 0, 3 * Math.PI / 4) }]);1142 }, `${property}: matrix3d`);1143 // Following tests aim for test the addition behavior for non-invertible1144 // matrices. Note that the addition for non-invertible matrices should be1145 // the same, just like addition for invertible matrices. With these tests,1146 // we can assure that addition never behaves as discrete. The non-invertible1147 // matrix that we use is the singular matrix, matrix(1, 1, 0, 0, 0, 100).1148 test(t => {1149 const idlName = propertyToIDL(property);1150 const target = createTestElement(t, setup);1151 target.style[idlName] = 'translateX(50px)';1152 const animation =1153 target.animate({ [idlName]: ['matrix(-1, 0, 0, -1, 200, 0)',1154 'matrix( 1, 1, 0, 0, 0, 100)'] },1155 { duration: 1000, fill: 'both', composite: 'add' });1156 testAnimationSampleMatrices(animation, idlName,1157 [ { time: 0, expected: [ -1, 0, 0, -1, 250, 0 ] },1158 { time: 1000, expected: [ 1, 1, 0, 0, 50, 100 ] }]);1159 }, `${property}: non-invertible matrices`);1160 test(t => {1161 const idlName = propertyToIDL(property);1162 const target = createTestElement(t, setup);1163 target.style[idlName] = 'translateX(50px)';1164 const animation = // matrix(0, -1, 1, 0, 200, 0)1165 target.animate({ [idlName]: ['matrix(-1, 0, 0, -1, 200, 0) rotate(90deg)',1166 // matrix(-1, -1, 0, 0, 0, 100)1167 'matrix( 1, 1, 0, 0, 0, 100) rotate(180deg)'] },1168 { duration: 1000, fill: 'both', composite: 'add' });1169 testAnimationSampleMatrices(animation, idlName,1170 [ { time: 0, expected: [ 0, -1, 1, 0, 250, 0 ] },1171 { time: 1000, expected: [ -1, -1, 0, 0, 50, 100 ] }]);1172 }, `${property}: non-invertible matrices in matched transform lists`);1173 test(t => {1174 const idlName = propertyToIDL(property);1175 const target = createTestElement(t, setup);1176 target.style[idlName] = 'translateX(50px)';1177 const animation = // matrix(-2, 0, 0, -2, 200, 0)1178 target.animate({ [idlName]: ['matrix(-1, 0, 0, -1, 200, 0) scale(2)',1179 // matrix(1, 1, 1, 1, 0, 100)1180 'matrix( 1, 1, 0, 0, 0, 100) skew(45deg)'] },1181 { duration: 1000, fill: 'both', composite: 'add' });1182 testAnimationSampleMatrices(animation, idlName,1183 [ { time: 0, expected: [ -2, 0, 0, -2, 250, 0 ] },1184 { time: 1000, expected: [ 1, 1, 1, 1, 50, 100 ] }]);1185 }, `${property}: non-invertible matrices in mismatched transform lists`);1186 },1187 testAccumulation: function(property, setup) {1188 test(t => {1189 const idlName = propertyToIDL(property);1190 const target = createTestElement(t, setup);1191 target.style[idlName] = 'translateX(100px)';1192 const animation = target.animate({ [idlName]: ['translateX(-200px)',1193 'translateX(500px)'] },1194 { duration: 1000, fill: 'both',1195 composite: 'accumulate' });1196 testAnimationSampleMatrices(animation, idlName,1197 [ { time: 0, expected: [ 1, 0, 0, 1, -100, 0 ] },1198 { time: 1000, expected: [ 1, 0, 0, 1, 600, 0 ] }]);1199 }, `${property}: translate`);1200 test(t => {1201 const idlName = propertyToIDL(property);1202 const target = createTestElement(t, setup);1203 target.style[idlName] = 'rotate(45deg)';1204 const animation = target.animate({ [idlName]: ['rotate(-90deg)',1205 'rotate(90deg)'] },1206 { duration: 1000, fill: 'both',1207 composite: 'accumulate' });1208 testAnimationSampleMatrices(animation, idlName,1209 [{ time: 0, expected: [ Math.cos(-Math.PI / 4),1210 Math.sin(-Math.PI / 4),1211 -Math.sin(-Math.PI / 4),1212 Math.cos(-Math.PI / 4),1213 0, 0] },1214 { time: 1000, expected: [ Math.cos(Math.PI * 3 / 4),1215 Math.sin(Math.PI * 3 / 4),1216 -Math.sin(Math.PI * 3 / 4),1217 Math.cos(Math.PI * 3 / 4),1218 0, 0] }]);1219 }, `${property}: rotate`);1220 test(t => {1221 const idlName = propertyToIDL(property);1222 const target = createTestElement(t, setup);1223 target.style[idlName] = 'scale(2)';1224 const animation = target.animate({ [idlName]: ['scale(-3)', 'scale(5)'] },1225 { duration: 1000, fill: 'both',1226 composite: 'accumulate' });1227 testAnimationSampleMatrices(animation, idlName,1228 // scale((2 - 1) + (-3 - 1) + 1)1229 [{ time: 0, expected: [ -2, 0, 0, -2, 0, 0 ] },1230 // scale((2 - 1) + (5 - 1) + 1)1231 { time: 1000, expected: [ 6, 0, 0, 6, 0, 0 ] }]);1232 }, `${property}: scale`);1233 test(t => {1234 const idlName = propertyToIDL(property);1235 const target = createTestElement(t, setup);1236 // matrix(1, tan(10deg), tan(10deg), 1)1237 target.style[idlName] = 'skew(10deg, 10deg)';1238 const animation = // matrix(1, tan(20deg), tan(-30deg), 1)1239 target.animate({ [idlName]: ['skew(-30deg, 20deg)',1240 // matrix(1, tan(-30deg), tan(20deg), 1)1241 'skew(20deg, -30deg)'] },1242 { duration: 1000, fill: 'both', composite: 'accumulate' });1243 testAnimationSampleMatrices(animation, idlName,1244 [{ time: 0, expected: [ 1, Math.tan(Math.PI/6),1245 Math.tan(-Math.PI/9), 1,1246 0, 0] },1247 { time: 1000, expected: [ 1, Math.tan(-Math.PI/9),1248 Math.tan(Math.PI/6), 1,1249 0, 0] }]);1250 }, `${property}: skew`);1251 test(t => {1252 const idlName = propertyToIDL(property);1253 const target = createTestElement(t, setup);1254 // matrix(1, 0, 0, 1, 100, 0)1255 target.style[idlName] = 'translateX(100px)';1256 const animation = // matrix(0, 1, -1, 0, 0, 0)1257 target.animate({ [idlName]: ['rotate(90deg)',1258 // matrix(-1, 0, 0, -1, 0, 0)1259 'rotate(180deg)'] },1260 { duration: 1000, fill: 'both', composite: 'accumulate' });1261 testAnimationSampleMatrices(animation, idlName,1262 [{ time: 0, expected: [ 0, 1, -1, 0, 100, 0 ] },1263 { time: 1000, expected: [ -1, 0, 0, -1, 100, 0 ] }]);1264 }, `${property}: rotate on translate`);1265 test(t => {1266 const idlName = propertyToIDL(property);1267 const target = createTestElement(t, setup);1268 // matrix(0, 1, -1, 0, 0, 0)1269 target.style[idlName] = 'rotate(90deg)';1270 const animation = // matrix(1, 0, 0, 1, 100, 0)1271 target.animate({ [idlName]: ['translateX(100px)',1272 // matrix(1, 0, 0, 1, 200, 0)1273 'translateX(200px)'] },1274 { duration: 1000, fill: 'both', composite: 'accumulate' });1275 testAnimationSampleMatrices(animation, idlName,1276 [{ time: 0, expected: [ 0, 1, -1, 0, 100, 0 ] },1277 { time: 1000, expected: [ 0, 1, -1, 0, 200, 0 ] }]);1278 }, `${property}: translate on rotate`);1279 test(t => {1280 const idlName = propertyToIDL(property);1281 const target = createTestElement(t, setup);1282 target.style[idlName] = 'rotate(45deg)';1283 const animation =1284 target.animate({ [idlName]: ['rotate(45deg) translateX(0px)',1285 'rotate(45deg) translateX(100px)'] },1286 { duration: 1000, fill: 'both', composite: 'accumulate' });1287 testAnimationSampleMatrices(animation, idlName,1288 [{ time: 0, expected: [ Math.cos(Math.PI / 2),1289 Math.sin(Math.PI / 2),1290 -Math.sin(Math.PI / 2),1291 Math.cos(Math.PI / 2),1292 0 * Math.cos(Math.PI / 2),1293 0 * Math.sin(Math.PI / 2) ] },1294 { time: 1000, expected: [ Math.cos(Math.PI / 2),1295 Math.sin(Math.PI / 2),1296 -Math.sin(Math.PI / 2),1297 Math.cos(Math.PI / 2),1298 100 * Math.cos(Math.PI / 2),1299 100 * Math.sin(Math.PI / 2) ] }]);1300 }, `${property}: rotate and translate on rotate`);1301 test(t => {1302 const idlName = propertyToIDL(property);1303 const target = createTestElement(t, setup);1304 target.style[idlName] = 'rotate(45deg) translateX(100px)';1305 const animation =1306 target.animate({ [idlName]: ['rotate(45deg)', 'rotate(45deg)'] },1307 { duration: 1000, fill: 'both', composite: 'accumulate' });1308 testAnimationSampleMatrices(animation, idlName,1309 [{ time: 0, expected: [ Math.cos(Math.PI / 2),1310 Math.sin(Math.PI / 2),1311 -Math.sin(Math.PI / 2),1312 Math.cos(Math.PI / 2),1313 100 * Math.cos(Math.PI / 2),1314 100 * Math.sin(Math.PI / 2) ] },1315 { time: 1000, expected: [ Math.cos(Math.PI / 2),1316 Math.sin(Math.PI / 2),1317 -Math.sin(Math.PI / 2),1318 Math.cos(Math.PI / 2),1319 100 * Math.cos(Math.PI / 2),1320 100 * Math.sin(Math.PI / 2) ] }]);1321 }, `${property}: rotate on rotate and translate`);1322 test(t => {1323 const idlName = propertyToIDL(property);1324 const target = createTestElement(t, setup);1325 target.style[idlName] = 'matrix(0, 1, -1, 0, 0, 0)';1326 const animation = // Same matrices as above.1327 target.animate({ [idlName]: [ 'matrix(1, 0, 0, 1, 100, 0)',1328 'matrix(1, 0, 0, 1, 200, 0)' ] },1329 { duration: 1000, fill: 'both', composite: 'accumulate' });1330 testAnimationSampleMatrices(animation, idlName,1331 [{ time: 0, expected: [ 0, 1, -1, 0, 100, 0 ] },1332 { time: 1000, expected: [ 0, 1, -1, 0, 200, 0 ] }]);1333 }, `${property}: matrix`);1334 test(t => {1335 const idlName = propertyToIDL(property);1336 const target = createTestElement(t, setup);1337 target.style[idlName] = 'rotate3d(1, 1, 0, 45deg)';1338 const animation =1339 target.animate({ [idlName]: [ 'rotate3d(1, 1, 0, -90deg)',1340 'rotate3d(1, 1, 0, 90deg)'] },1341 { duration: 1000, fill: 'both', composite: 'accumulate' });1342 testAnimationSampleMatrices(animation, idlName,1343 [{ time: 0, expected: rotate3dToMatrix(1, 1, 0, -Math.PI / 4) },1344 { time: 1000, expected: rotate3dToMatrix(1, 1, 0, 3 * Math.PI / 4) }]);1345 }, `${property}: rotate3d`);1346 test(t => {1347 const idlName = propertyToIDL(property);1348 const target = createTestElement(t, setup);1349 // To calculate expected matrices easily, generate input matrices from1350 // rotate3d.1351 target.style[idlName] = rotate3dToMatrix3d(1, 1, 0, Math.PI / 4);1352 const from = rotate3dToMatrix3d(1, 1, 0, -Math.PI / 2);1353 const to = rotate3dToMatrix3d(1, 1, 0, Math.PI / 2);1354 const animation =1355 target.animate({ [idlName]: [ from, to ] },1356 { duration: 1000, fill: 'both', composite: 'accumulate' });1357 testAnimationSampleMatrices(animation, idlName,1358 [{ time: 0, expected: rotate3dToMatrix(1, 1, 0, -Math.PI / 4) },1359 { time: 1000, expected: rotate3dToMatrix(1, 1, 0, 3 * Math.PI / 4) }]);1360 }, `${property}: matrix3d`);1361 test(t => {1362 const idlName = propertyToIDL(property);1363 const target = createTestElement(t, setup);1364 const matrixArray = [ 1, 0, 0, 0,1365 0, 1, 0, 0,1366 0, 0, 1, 0,1367 0, 0, 1, 1 ];1368 target.style[idlName] = createMatrixFromArray(matrixArray);1369 const animation =1370 target.animate({ [idlName]: [ 'none', 'none' ] },1371 { duration: 1000, fill: 'both', composite: 'accumulate' });1372 testAnimationSampleMatrices(animation, idlName,1373 [{ time: 0, expected: matrixArray },1374 { time: 1000, expected: matrixArray }]);1375 }, `${property}: none`);1376 // Following tests aim for test the fallback discrete accumulation behavior1377 // for non-invertible matrices. The non-invertible matrix that we use is the1378 // singular matrix, matrix(1, 1, 0, 0, 0, 100).1379 test(t => {1380 const idlName = propertyToIDL(property);1381 const target = createTestElement(t, setup);1382 target.animate({ [idlName]: ['matrix(-1, 0, 0, -1, 200, 0)',1383 'matrix(-1, 0, 0, -1, 200, 0)'] }, 1000);1384 const animation = target.animate(1385 {1386 [idlName]: [1387 'matrix( 1, 1, 0, 0, 0, 100)',1388 'matrix( 1, 1, 0, 0, 0, 100)',1389 ],1390 },1391 { duration: 1000, composite: 'accumulate' }1392 );1393 testAnimationSampleMatrices(animation, idlName, [1394 { time: 0, expected: [1, 1, 0, 0, 0, 100] },1395 ]);1396 }, `${property}: non-invertible matrices (non-invertible onto invertible)`);1397 test(t => {1398 const idlName = propertyToIDL(property);1399 const target = createTestElement(t, setup);1400 target.animate({ [idlName]: ['matrix( 1, 1, 0, 0, 0, 100)',1401 'matrix( 1, 1, 0, 0, 0, 100)'] }, 1000);1402 const animation = target.animate(1403 {1404 [idlName]: [1405 'matrix(-1, 0, 0, -1, 200, 0)',1406 'matrix(-1, 0, 0, -1, 200, 0)',1407 ],1408 },1409 { duration: 1000, composite: 'accumulate' }1410 );1411 testAnimationSampleMatrices(animation, idlName, [1412 { time: 0, expected: [-1, 0, 0, -1, 200, 0] },1413 ]);1414 }, `${property}: non-invertible matrices (invertible onto non-invertible)`);1415 test(t => {1416 const idlName = propertyToIDL(property);1417 const target = createTestElement(t, setup);1418 // matrix(0, -1, 1, 0, 250, 0)1419 target.animate(1420 {1421 [idlName]: [1422 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) rotate(90deg)',1423 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) rotate(90deg)',1424 ],1425 },1426 10001427 );1428 // matrix(-1, -1, 0, 0, 100, 100)1429 const animation = target.animate(1430 {1431 [idlName]: [1432 'translate(100px) matrix( 1, 1, 0, 0, 0, 100) rotate(180deg)',1433 'translate(100px) matrix( 1, 1, 0, 0, 0, 100) rotate(180deg)',1434 ],1435 },1436 { duration: 1000, composite: 'accumulate' }1437 );1438 testAnimationSampleMatrices(animation, idlName, [1439 { time: 0, expected: [-1, -1, 0, 0, 100, 100] },1440 ]);1441 }, `${property}: non-invertible matrices in matched transform lists (non-invertible onto invertible)`);1442 test(t => {1443 const idlName = propertyToIDL(property);1444 const target = createTestElement(t, setup);1445 // matrix(-1, -1, 0, 0, 100, 100)1446 target.animate(1447 {1448 [idlName]: [1449 'translate(100px) matrix(1, 1, 0, 0, 0, 100) rotate(180deg)',1450 'translate(100px) matrix(1, 1, 0, 0, 0, 100) rotate(180deg)',1451 ],1452 },1453 10001454 );1455 // matrix(0, -1, 1, 0, 250, 0)1456 const animation = target.animate(1457 {1458 [idlName]: [1459 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) rotate(90deg)',1460 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) rotate(90deg)',1461 ],1462 },1463 { duration: 1000, composite: 'accumulate' }1464 );1465 testAnimationSampleMatrices(animation, idlName, [1466 { time: 0, expected: [0, -1, 1, 0, 250, 0] },1467 ]);1468 }, `${property}: non-invertible matrices in matched transform lists (invertible onto non-invertible)`);1469 test(t => {1470 const idlName = propertyToIDL(property);1471 const target = createTestElement(t, setup);1472 // matrix(-2, 0, 0, -2, 250, 0)1473 target.animate(1474 {1475 [idlName]: [1476 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) scale(2)',1477 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) scale(2)',1478 ],1479 },1480 10001481 );1482 // matrix(1, 1, 1, 1, 100, 100)1483 const animation = target.animate(1484 {1485 [idlName]: [1486 'translate(100px) matrix(1, 1, 0, 0, 0, 100) skew(45deg)',1487 'translate(100px) matrix(1, 1, 0, 0, 0, 100) skew(45deg)',1488 ],1489 },1490 { duration: 1000, composite: 'accumulate' }1491 );1492 testAnimationSampleMatrices(animation, idlName, [1493 { time: 0, expected: [1, 1, 1, 1, 100, 100] },1494 ]);1495 }, `${property}: non-invertible matrices in mismatched transform lists`1496 + ' (non-invertible onto invertible)');1497 test(t => {1498 const idlName = propertyToIDL(property);1499 const target = createTestElement(t, setup);1500 // matrix(1, 1, 1, 1, 100, 100)1501 target.animate(1502 {1503 [idlName]: [1504 'translate(100px) matrix(1, 1, 0, 0, 0, 100) skew(45deg)',1505 'translate(100px) matrix(1, 1, 0, 0, 0, 100) skew(45deg)',1506 ],1507 },1508 10001509 );1510 // matrix(-2, 0, 0, -2, 250, 0)1511 const animation = target.animate(1512 {1513 [idlName]: [1514 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) scale(2)',1515 'translate(50px) matrix(-1, 0, 0, -1, 200, 0) scale(2)',1516 ],1517 },1518 { duration: 1000, composite: 'accumulate' }1519 );1520 testAnimationSampleMatrices(animation, idlName, [1521 { time: 0, expected: [-2, 0, 0, -2, 250, 0] },1522 ]);1523 }, `${property}: non-invertible matrices in mismatched transform lists`1524 + ' (invertible onto non-invertible)');1525 },1526};1527const rotateListType = {1528 testInterpolation: (property, setup) => {1529 test(t => {1530 const idlName = propertyToIDL(property);1531 const target = createTestElement(t, setup);1532 const animation = target.animate(1533 {1534 [idlName]: ['45deg', '135deg'],...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptAnimationSampleMatrices = require('wptAnimationSampleMatrices');2var wptAnimationSampleMatrices = new wptAnimationSampleMatrices();3wptAnimationSampleMatrices.testAnimationSampleMatrices();4var wptAnimationSampleMatrices = function() {5 var testAnimationSampleMatrices = function() {6 };7 return {8 };9};10module.exports = wptAnimationSampleMatrices;

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptAnimation = require('wptAnimation.js');2var wptAnimation = new wptAnimation();3wptAnimation.testAnimationSampleMatrices();4var wptAnimation = function () {5 this.testAnimationSampleMatrices = function(){6 console.log("testAnimationSampleMatrices called");7 }8}

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptAnimationSample = require('wptAnimationSample');2var sample = new wptAnimationSample();3sample.testAnimationSampleMatrices();4var testAnimationSampleMatrices = function () {5 var animationSample = new wptAnimationSample();6 animationSample.setAnimationSampleMatrices();7 animationSample.displayAnimationSampleMatrices();8};9var setAnimationSampleMatrices = function () {10 var matrix1 = new wptMatrix();11 matrix1.setMatrix(1, 2, 3, 4, 5, 6);12 this.matrices.push(matrix1);13 var matrix2 = new wptMatrix();14 matrix2.setMatrix(7, 8, 9, 10, 11, 12);15 this.matrices.push(matrix2);16 var matrix3 = new wptMatrix();17 matrix3.setMatrix(13, 14, 15, 16, 17, 18);18 this.matrices.push(matrix3);19};20var displayAnimationSampleMatrices = function () {21 for (var i = 0; i < this.matrices.length; i++) {22 this.matrices[i].displayMatrix();23 }24};25var wptAnimationSample = function () {26 this.matrices = [];27 this.setAnimationSampleMatrices = setAnimationSampleMatrices;28 this.displayAnimationSampleMatrices = displayAnimationSampleMatrices;29};30var wptMatrix = function () {31 this.a = 0;32 this.b = 0;33 this.c = 0;34 this.d = 0;35 this.e = 0;36 this.f = 0;37 this.setMatrix = setMatrix;38 this.displayMatrix = displayMatrix;39};

Full Screen

Using AI Code Generation

copy

Full Screen

1var testAnimationSampleMatrices = new WPT();2testAnimationSampleMatrices.testAnimationSampleMatrices();3WPT.prototype.testAnimationSampleMatrices = function() {4 var animation = new Animation();5 var sampleMatrices = animation.sampleMatrices;6 var sampleMatricesLength = sampleMatrices.length;7 for (var i = 0; i < sampleMatricesLength; i++) {8 var sampleMatrix = sampleMatrices[i];9 var sampleMatrixLength = sampleMatrix.length;10 for (var j = 0; j < sampleMatrixLength; j++) {11 var sampleMatrixElement = sampleMatrix[j];12 console.log(sampleMatrixElement);13 }14 }15};16];

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");2wptAnimationSample.testAnimationSampleMatrices();3function testAnimationSampleMatrices()4{5 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");6 wptAnimationSample.testAnimationSampleMatrices();7}8function testAnimationSampleMatrices()9{10 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");11 wptAnimationSample.testAnimationSampleMatrices();12}13function testAnimationSampleMatrices()14{15 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");16 wptAnimationSample.testAnimationSampleMatrices();17}18function testAnimationSampleMatrices()19{20 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");21 wptAnimationSample.testAnimationSampleMatrices();22}23function testAnimationSampleMatrices()24{25 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");26 wptAnimationSample.testAnimationSampleMatrices();27}28function testAnimationSampleMatrices()29{30 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");31 wptAnimationSample.testAnimationSampleMatrices();32}33function testAnimationSampleMatrices()34{35 var wptAnimationSample = new ActiveXObject("WptAnimationSample.wptAnimationSample");36 wptAnimationSample.testAnimationSampleMatrices();37}

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptest = require('wptest.js');2var testAnimationSampleMatrices = wptest.testAnimationSampleMatrices;3testAnimationSampleMatrices(1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5);4var testAnimationSampleMatrices = function (testMatrix, a, b, c, d, e, f) {5 console.log("testAnimationSampleMatrices");6 console.log("testMatrix = " + testMatrix);7 console.log("a = " + a);8 console.log("b = " + b);9 console.log("c = " + c);10 console.log("d = " + d);11 console.log("e = " + e);12 console.log("f = " + f);13}14module.exports = {15}

Full Screen

Using AI Code Generation

copy

Full Screen

1var anim = new wptAnimation();2anim.testAnimationSampleMatrices();3wptAnimation.prototype.testAnimationSampleMatrices = function(){4 var anim = new wptAnimation();5 var matrices = anim.sampleMatrices();6 console.log(matrices);7}8wptAnimation.prototype.sampleMatrices = function(){9 var matrices = [];10 for(var i=0; i< this.frames.length; i++){11 var frame = this.frames[i];12 matrices.push(frame.matrix);13 }14 return matrices;15}16wptAnimation.prototype.createFrames = function(){17 this.frames = [];18 for(var i=0; i< this.transforms.length; i++){19 var transform = this.transforms[i];20 var frame = new wptAnimationFrame();21 frame.transform = transform;22 this.frames.push(frame);23 }24}25wptAnimation.prototype.createTransforms = function(){26 this.transforms = [];27 for(var i=0; i< this.keyframes.length; i++){28 var keyframe = this.keyframes[i];29 var transform = new wptTransform();30 transform.position = keyframe.position;31 transform.rotation = keyframe.rotation;32 transform.scale = keyframe.scale;33 this.transforms.push(transform);34 }35}36wptAnimation.prototype.createKeyframes = function(){37 this.keyframes = [];38 for(var i=0; i< this.keyframeData.length; i++){39 var keyframeData = this.keyframeData[i];40 var keyframe = new wptKeyframe();41 keyframe.position = keyframeData.position;42 keyframe.rotation = keyframeData.rotation;43 keyframe.scale = keyframeData.scale;44 this.keyframes.push(keyframe);45 }46}47wptAnimation.prototype.createKeyframeData = function(){48 this.keyframeData = [];49 for(var i=0; i< this.keyframePositions.length; i++){50 var keyframeData = new wptKeyframeData();

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptAnimationSample = require("wptAnimationSample");2var matrices = wptAnimationSample.testAnimationSampleMatrices();3var matrix = matrices[0];4var wptAnimationSample = require("wptAnimationSample");5var matrices = wptAnimationSample.testAnimationSampleMatrices();6var matrix = matrices[0];7var wptAnimationSample = require("wptAnimationSample");8var matrices = wptAnimationSample.testAnimationSampleMatrices();9var matrix = matrices[0];10var wptAnimationSample = require("wptAnimationSample");11var matrices = wptAnimationSample.testAnimationSampleMatrices();12var matrix = matrices[0];13var wptAnimationSample = require("wptAnimationSample");14var matrices = wptAnimationSample.testAnimationSampleMatrices();15var matrix = matrices[0];16var wptAnimationSample = require("wptAnimationSample");17var matrices = wptAnimationSample.testAnimationSampleMatrices();18var matrix = matrices[0];19var wptAnimationSample = require("wptAnimationSample");20var matrices = wptAnimationSample.testAnimationSampleMatrices();21var matrix = matrices[0];22var wptAnimationSample = require("wptAnimationSample");23var matrices = wptAnimationSample.testAnimationSampleMatrices();24var matrix = matrices[0];

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptAnimationTest = require('./wptAnimationTest.js');2var wptAnimation = require('./wptAnimation.js');3var wptAnimationTestInstance = new wptAnimationTest();4var wptAnimationInstance = new wptAnimation();5var testMatrices = wptAnimationTestInstance.getTestAnimationSampleMatrices();6var testName = wptAnimationTestInstance.getTestName();7wptAnimationInstance.startAnimation(testMatrices, testName);

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run wpt automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful