How to use testFont method in wpt

Best JavaScript code snippet using wpt

ttp.test.ts

Source:ttp.test.ts Github

copy

Full Screen

1/* eslint-disable @typescript-eslint/no-explicit-any */2import { PDFFont } from 'pdf-lib';3import moment from 'moment';4import { PDFPageFix } from '../src/lib/pdf/page';5import drawLine from '../src/lib/ttp/drawLine';6import drawText from '../src/lib/ttp/drawText';7import TTP from '../src/lib/ttp';8let pageMock: { [name: string]: jest.Mock };9let page: PDFPageFix;10beforeEach(async () => {11 pageMock = {12 // eslint-disable-next-line @typescript-eslint/ban-types13 drawText: jest.fn((text: string, options?: Object) => {14 const o = { ...options };15 return Object.assign(o, { text });16 }),17 setFont: jest.fn((font: PDFFont) => font),18 setFontSize: jest.fn((size: number) => size),19 drawLine: jest.fn((options: unknown) => options),20 };21 page = <any>pageMock;22});23describe('drawLine', () => {24 it('drawLine', () => {25 const a = drawLine({26 start: { x: '25mm', y: '70mm' },27 end: { x: '137mm', y: '70mm' },28 });29 a(page);30 expect(pageMock.drawLine.mock.calls.length).toBe(1);31 expect(pageMock.drawLine.mock.calls[0][0]).toEqual({32 start: { x: '25mm', y: '70mm' },33 end: { x: '137mm', y: '70mm' },34 });35 expect(pageMock.drawLine.mock.results[0].value).toEqual({36 start: { x: '25mm', y: '70mm' },37 end: { x: '137mm', y: '70mm' },38 });39 });40});41describe('drawText', () => {42 it('drawText', () => {43 const a = drawText(44 {45 text: 'Year',46 options: {47 font: 'testFont',48 size: 9,49 x: '32mm',50 y: '71mm',51 alignment: { horizontal: 'center' },52 },53 },54 { testFont: <PDFFont>(<any>'testFontObject') }55 );56 a(page);57 expect(pageMock.drawText.mock.calls.length).toBe(1);58 expect(pageMock.drawText.mock.calls[0][0]).toEqual('Year');59 expect(pageMock.drawText.mock.calls[0][1]).toEqual({60 font: 'testFontObject',61 size: 9,62 x: '32mm',63 y: '71mm',64 alignment: { horizontal: 'center' },65 });66 expect(pageMock.drawText.mock.results[0].value).toEqual({67 text: 'Year',68 font: 'testFontObject',69 size: 9,70 x: '32mm',71 y: '71mm',72 alignment: { horizontal: 'center' },73 });74 });75 it('drawText 2', () => {76 const a = drawText(77 { text: 'Year' },78 { testFont: <PDFFont>(<any>'testFontObject') }79 );80 a(page);81 expect(pageMock.drawText.mock.calls.length).toBe(1);82 expect(pageMock.drawText.mock.calls[0][0]).toEqual('Year');83 expect(pageMock.drawText.mock.calls[0][1]).toEqual(undefined);84 expect(pageMock.drawText.mock.results[0].value).toEqual({ text: 'Year' });85 });86 it('drawText var', () => {87 const a = drawText(88 {89 text: { type: 'recode', data: 'date', format: 'MM' },90 options: {91 font: 'testFont',92 size: 12,93 x: '46mm',94 y: '63mm',95 alignment: { horizontal: 'center' },96 },97 },98 { testFont: <PDFFont>(<any>'testFontObject') }99 );100 a(page, undefined, { date: moment.utc(1613433600000).toISOString() });101 expect(pageMock.drawText.mock.calls[0][0]).toEqual('02');102 expect(pageMock.drawText.mock.calls[0][1]).toEqual({103 font: 'testFontObject',104 size: 12,105 x: '46mm',106 y: '63mm',107 alignment: { horizontal: 'center' },108 });109 expect(pageMock.drawText.mock.results[0].value).toEqual({110 text: '02',111 font: 'testFontObject',112 size: 12,113 x: '46mm',114 y: '63mm',115 alignment: { horizontal: 'center' },116 });117 });118 it('drawText var2', () => {119 const a = drawText(120 {121 text: { type: 'recode', data: 'date', format: 'HH' },122 options: {123 font: 'testFont',124 size: 12,125 x: '46mm',126 y: '63mm',127 alignment: { horizontal: 'center' },128 },129 },130 { testFont: <PDFFont>(<any>'testFontObject') }131 );132 a(page, undefined, { date: moment.utc(1613433600000).toISOString() });133 expect(pageMock.drawText.mock.calls[0][0]).toEqual('00');134 expect(pageMock.drawText.mock.calls[0][1]).toEqual({135 font: 'testFontObject',136 size: 12,137 x: '46mm',138 y: '63mm',139 alignment: { horizontal: 'center' },140 });141 expect(pageMock.drawText.mock.results[0].value).toEqual({142 text: '00',143 font: 'testFontObject',144 size: 12,145 x: '46mm',146 y: '63mm',147 alignment: { horizontal: 'center' },148 });149 });150 it('drawText var3', () => {151 const a = drawText(152 {153 text: { type: 'recode', data: 'rst_sent' },154 options: {155 font: 'testFont',156 size: 12,157 x: '46mm',158 y: '63mm',159 alignment: { horizontal: 'center' },160 },161 },162 { testFont: <PDFFont>(<any>'testFontObject') }163 );164 a(page, undefined, { rst_sent: '42' });165 expect(pageMock.drawText.mock.calls[0][0]).toEqual('42');166 expect(pageMock.drawText.mock.calls[0][1]).toEqual({167 font: 'testFontObject',168 size: 12,169 x: '46mm',170 y: '63mm',171 alignment: { horizontal: 'center' },172 });173 expect(pageMock.drawText.mock.results[0].value).toEqual({174 text: '42',175 font: 'testFontObject',176 size: 12,177 x: '46mm',178 y: '63mm',179 alignment: { horizontal: 'center' },180 });181 });182 it('drawText var4', () => {183 const a = drawText(184 {185 text: { type: 'userdata', data: 'qth' },186 options: {187 font: 'testFont',188 size: 12,189 x: '46mm',190 y: '63mm',191 alignment: { horizontal: 'center' },192 },193 },194 { testFont: <PDFFont>(<any>'testFontObject') }195 );196 a(page, { qth: 'Tokyo, osaka' }, undefined);197 expect(pageMock.drawText.mock.calls[0][0]).toEqual('Tokyo, osaka');198 expect(pageMock.drawText.mock.calls[0][1]).toEqual({199 font: 'testFontObject',200 size: 12,201 x: '46mm',202 y: '63mm',203 alignment: { horizontal: 'center' },204 });205 expect(pageMock.drawText.mock.results[0].value).toEqual({206 text: 'Tokyo, osaka',207 font: 'testFontObject',208 size: 12,209 x: '46mm',210 y: '63mm',211 alignment: { horizontal: 'center' },212 });213 });214 it('drawText throw', () => {215 const a = drawText(216 { text: <any>{ type: 'a', data: 'qth' } },217 { testFont: <PDFFont>(<any>'testFontObject') }218 );219 expect(() => a(page)).toThrow();220 });221 it('drawText throw2', () => {222 const a = drawText(223 { text: { type: 'recode', data: 'rst_sent' } },224 { testFont: <PDFFont>(<any>'testFontObject') }225 );226 expect(() => a(page)).toThrow();227 });228 it('drawText throw3', () => {229 const a = drawText(230 { text: { type: 'userdata', data: 'qth' } },231 { testFont: <PDFFont>(<any>'testFontObject') }232 );233 expect(() => a(page)).toThrow();234 });235});236describe('ttp', () => {237 let ttp: TTP;238 beforeEach(() => {239 ttp = new TTP({240 fm2prjp: <PDFFont>(<any>'fm2prjpObject'),241 testFont: <PDFFont>(<any>'testFontObject'),242 });243 });244 it('drawLine', () => {245 const a = ttp.do({246 drawLine: {247 start: {248 x: '123mm',249 y: '80mm',250 },251 end: {252 x: '123mm',253 y: '60mm',254 },255 },256 });257 a(page);258 expect(pageMock.drawLine.mock.calls.length).toBe(1);259 expect(pageMock.drawLine.mock.calls[0][0]).toEqual({260 start: { x: '123mm', y: '80mm' },261 end: { x: '123mm', y: '60mm' },262 });263 expect(pageMock.drawLine.mock.results[0].value).toEqual({264 start: { x: '123mm', y: '80mm' },265 end: { x: '123mm', y: '60mm' },266 });267 });268 it('drawText', () => {269 const a = ttp.do({270 drawText: {271 text: 'Year',272 options: {273 font: 'fm2prjp',274 size: 9,275 x: '32mm',276 y: '71mm',277 alignment: {278 horizontal: 'center',279 },280 },281 },282 });283 a(page);284 expect(pageMock.drawText.mock.calls.length).toBe(1);285 expect(pageMock.drawText.mock.calls[0][0]).toEqual('Year');286 expect(pageMock.drawText.mock.calls[0][1]).toEqual({287 font: 'fm2prjpObject',288 size: 9,289 x: '32mm',290 y: '71mm',291 alignment: { horizontal: 'center' },292 });293 expect(pageMock.drawText.mock.results[0].value).toEqual({294 text: 'Year',295 font: 'fm2prjpObject',296 size: 9,297 x: '32mm',298 y: '71mm',299 alignment: { horizontal: 'center' },300 });301 });302 it('drawText 2', () => {303 const a = ttp.do({304 drawText: {305 text: { type: 'recode', data: 'rst_sent' },306 options: {307 font: 'testFont',308 size: 12,309 x: '46mm',310 y: '63mm',311 alignment: { horizontal: 'center' },312 },313 },314 });315 a(page, undefined, { rst_sent: '42' });316 expect(pageMock.drawText.mock.calls.length).toBe(1);317 expect(pageMock.drawText.mock.calls[0][0]).toEqual('42');318 expect(pageMock.drawText.mock.calls[0][1]).toEqual({319 font: 'testFontObject',320 size: 12,321 x: '46mm',322 y: '63mm',323 alignment: { horizontal: 'center' },324 });325 expect(pageMock.drawText.mock.results[0].value).toEqual({326 text: '42',327 font: 'testFontObject',328 size: 12,329 x: '46mm',330 y: '63mm',331 alignment: { horizontal: 'center' },332 });333 });334 it('throw 1', () => {335 expect(() =>336 ttp.do({337 drawLine: {338 start: {339 x: '123mm',340 y: '80mm',341 },342 end: {343 x: '123mm',344 y: '60mm',345 },346 },347 drawText: {348 text: 'Year',349 options: {350 font: 'fm2prjp',351 size: 9,352 x: '32mm',353 y: '71mm',354 alignment: {355 horizontal: 'center',356 },357 },358 },359 })360 ).toThrow(/parameter/);361 });362 it('throw 2', () => {363 expect(() => ttp.do(<any>{ a: { c: 1 } })).toThrow(/undefined/);364 });...

Full Screen

Full Screen

alignment.test.ts

Source:alignment.test.ts Github

copy

Full Screen

1import { PDFDocument, PDFFont, StandardFonts } from 'pdf-lib';2import * as alignment from '../src/lib/pdf/alignment';3describe('text', () => {4 let testFont: PDFFont;5 beforeAll(async () => {6 const pdfDoc = await PDFDocument.create();7 testFont = await pdfDoc.embedFont(StandardFonts.Helvetica);8 });9 it('left bottom', () => {10 expect(11 alignment.text({12 alignment: { vertical: 'bottom', horizontal: 'left' },13 text: 'aaa',14 font: testFont,15 size: 12,16 x: 24,17 y: 66,18 })19 ).toEqual({ x: 24, y: 66 });20 });21 it('right bottom', () => {22 expect(23 alignment.text({24 alignment: { vertical: 'bottom', horizontal: 'right' },25 text: 'aaa',26 font: testFont,27 size: 12,28 x: 24,29 y: 66,30 })31 ).toEqual({ x: 3.983999999999998, y: 66 });32 });33 it('left top', () => {34 expect(35 alignment.text({36 alignment: { vertical: 'top', horizontal: 'left' },37 text: 'aaa',38 font: testFont,39 size: 12,40 x: 24,41 y: 66,42 })43 ).toEqual({ x: 24, y: 54.9 });44 });45 it('right top', () => {46 expect(47 alignment.text({48 alignment: { vertical: 'top', horizontal: 'right' },49 text: 'aaa',50 font: testFont,51 size: 12,52 x: 24,53 y: 66,54 })55 ).toEqual({ x: 3.983999999999998, y: 54.9 });56 });57 it('center top', () => {58 expect(59 alignment.text({60 alignment: { vertical: 'top', horizontal: 'center' },61 text: 'aaa',62 font: testFont,63 size: 12,64 x: 24,65 y: 66,66 })67 ).toEqual({ x: 13.991999999999999, y: 54.9 });68 });69 it('center bottom', () => {70 expect(71 alignment.text({72 alignment: { vertical: 'bottom', horizontal: 'center' },73 text: 'aaa',74 font: testFont,75 size: 12,76 x: 24,77 y: 66,78 })79 ).toEqual({ x: 13.991999999999999, y: 66 });80 });81 it('left middle', () => {82 expect(83 alignment.text({84 alignment: { vertical: 'middle', horizontal: 'left' },85 text: 'aaa',86 font: testFont,87 size: 12,88 x: 24,89 y: 66,90 })91 ).toEqual({ x: 24, y: 60.45 });92 });93 it('right middle', () => {94 expect(95 alignment.text({96 alignment: { vertical: 'middle', horizontal: 'right' },97 text: 'aaa',98 font: testFont,99 size: 12,100 x: 24,101 y: 66,102 })103 ).toEqual({ x: 3.983999999999998, y: 60.45 });104 });105 it('center middle', () => {106 expect(107 alignment.text({108 alignment: { vertical: 'middle', horizontal: 'center' },109 text: 'aaa',110 font: testFont,111 size: 12,112 x: 24,113 y: 66,114 })115 ).toEqual({ x: 13.991999999999999, y: 60.45 });116 });117 it('undefined undefined', () => {118 expect(119 alignment.text({ text: 'aaa', font: testFont, size: 12, x: 24, y: 66 })120 ).toEqual({ x: 24, y: 66 });121 });122 it('left undefined', () => {123 expect(124 alignment.text({125 alignment: { horizontal: 'left' },126 text: 'aaa',127 font: testFont,128 size: 12,129 x: 24,130 y: 66,131 })132 ).toEqual({ x: 24, y: 66 });133 });134 it('center undefined', () => {135 expect(136 alignment.text({137 alignment: { horizontal: 'center' },138 text: 'aaa',139 font: testFont,140 size: 12,141 x: 24,142 y: 66,143 })144 ).toEqual({ x: 13.991999999999999, y: 66 });145 });146 it('right undefined', () => {147 expect(148 alignment.text({149 alignment: { horizontal: 'right' },150 text: 'aaa',151 font: testFont,152 size: 12,153 x: 24,154 y: 66,155 })156 ).toEqual({ x: 3.983999999999998, y: 66 });157 });158 it('undefined top', () => {159 expect(160 alignment.text({161 alignment: { vertical: 'top' },162 text: 'aaa',163 font: testFont,164 size: 12,165 x: 24,166 y: 66,167 })168 ).toEqual({ x: 24, y: 54.9 });169 });170 it('undefined middle', () => {171 expect(172 alignment.text({173 alignment: { vertical: 'middle' },174 text: 'aaa',175 font: testFont,176 size: 12,177 x: 24,178 y: 66,179 })180 ).toEqual({ x: 24, y: 60.45 });181 });182 it('undefined bottom', () => {183 expect(184 alignment.text({185 alignment: { vertical: 'bottom' },186 text: 'aaa',187 font: testFont,188 size: 12,189 x: 24,190 y: 66,191 })192 ).toEqual({ x: 24, y: 66 });193 });194 it('hoge undefined', () => {195 expect(() =>196 alignment.text({197 // eslint-disable-next-line @typescript-eslint/no-explicit-any198 alignment: <any>{ horizontal: 'hoge' },199 text: 'aaa',200 font: testFont,201 size: 12,202 x: 24,203 y: 66,204 })205 ).toThrow();206 });207 it('undefined hoge', () => {208 expect(() =>209 alignment.text({210 // eslint-disable-next-line @typescript-eslint/no-explicit-any211 alignment: <any>{ vertical: 'hoge' },212 text: 'aaa',213 font: testFont,214 size: 12,215 x: 24,216 y: 66,217 })218 ).toThrow();219 });220 it('hoge left', () => {221 expect(() =>222 alignment.text({223 // eslint-disable-next-line @typescript-eslint/no-explicit-any224 alignment: <any>{ vertical: 'hoge', horizontal: 'left' },225 text: 'aaa',226 font: testFont,227 size: 12,228 x: 24,229 y: 66,230 })231 ).toThrow();232 });233 it('hoge center', () => {234 expect(() =>235 alignment.text({236 // eslint-disable-next-line @typescript-eslint/no-explicit-any237 alignment: <any>{ vertical: 'hoge', horizontal: 'center' },238 text: 'aaa',239 font: testFont,240 size: 12,241 x: 24,242 y: 66,243 })244 ).toThrow();245 });246 it('hoge right', () => {247 expect(() =>248 alignment.text({249 // eslint-disable-next-line @typescript-eslint/no-explicit-any250 alignment: <any>{ vertical: 'hoge', horizontal: 'right' },251 text: 'aaa',252 font: testFont,253 size: 12,254 x: 24,255 y: 66,256 })257 ).toThrow();258 });259 it('top hoge', () => {260 expect(() =>261 alignment.text({262 // eslint-disable-next-line @typescript-eslint/no-explicit-any263 alignment: <any>{ vertical: 'top', horizontal: 'hoge' },264 text: 'aaa',265 font: testFont,266 size: 12,267 x: 24,268 y: 66,269 })270 ).toThrow();271 });272 it('middle hoge', () => {273 expect(() =>274 alignment.text({275 // eslint-disable-next-line @typescript-eslint/no-explicit-any276 alignment: <any>{ vertical: 'middle', horizontal: 'hoge' },277 text: 'aaa',278 font: testFont,279 size: 12,280 x: 24,281 y: 66,282 })283 ).toThrow();284 });285 it('bottom hoge', () => {286 expect(() =>287 alignment.text({288 // eslint-disable-next-line @typescript-eslint/no-explicit-any289 alignment: <any>{ vertical: 'bottom', horizontal: 'hoge' },290 text: 'aaa',291 font: testFont,292 size: 12,293 x: 24,294 y: 66,295 })296 ).toThrow();297 });298 it('alignment is hoge', () => {299 expect(() =>300 // eslint-disable-next-line @typescript-eslint/no-explicit-any301 alignment.text(<any>{302 alignment: 'hoge',303 text: 'aaa',304 font: testFont,305 size: 12,306 x: 24,307 y: 66,308 })309 ).toThrow();310 });...

Full Screen

Full Screen

Theme.js

Source:Theme.js Github

copy

Full Screen

1if (jasy.Env.isSet("runtime", "browser"))2{3 var suite = new core.testrunner.Suite("theme/Theme");4 suite.test("test for class", function() 5 {6 this.isTrue(!!(new unify.theme.Theme({}) ), "Class is available" );7 });8 suite.test("theme name", function() {9 var t = new unify.theme.Theme({10 name: "Testname"11 });12 this.isEqual(t.name(), "Testname", "Theme has name Testname");13 });14 suite.test("colors", function() {15 var t = new unify.theme.Theme({16 colors: {17 color1: "#ff0000",18 color2: "green"19 }20 });21 this.isEqual(t.resolveColor("color1"), "#ff0000", "Color1 is red");22 this.isEqual(t.resolveColor("color2"), "green", "Color2 is green");23 this.isEqual(t.resolveColor("color3"), null, "Color3 is not set");24 });25 suite.test("fonts", function() {26 jasy.Asset.addData({27 profiles : [],28 assets : {29 "testfont.woff" : {30 p:0,31 u:"testfont"32 },33 "testfont.ttf" : {34 p:0,35 u:"testfont"36 },37 "testfont.svg" : {38 p:0,39 u:"testfont"40 },41 "testfont.eot" : {42 p:0,43 u:"testfont"44 }45 }46 });47 var t = new unify.theme.Theme({48 fonts: {49 font0: {},50 font1: {51 family: "sans-serif",52 size: 12,53 style: "italic",54 weight: "bold",55 decoration: "underline",56 lineHeight: 1.557 },58 font2: {59 family: "Droid",60 webfont: new unify.theme.WebFont("testfont")61 }62 }63 });64 var font0 = t.resolveFont("font0");65 this.isEqual(font0.fontSize, "16px", "Size of font0 is 16px per default");66 this.isEqual(font0.fontStyle, "normal", "Style of font0 is normal per default");67 this.isEqual(font0.fontWeight, "normal", "Weight of font0 is normal per default");68 this.isEqual(font0.textDecoration, "none", "Text decoration of font0 is none per default");69 this.isEqual(font0.lineHeight, 1.0, "Line height of font0 is 1.0 per default");70 this.isEqual(font0.fontObject, null, "Font object of font0");71 72 var font1 = t.resolveFont("font1");73 this.isEqual(font1.fontFamily, "sans-serif", "Font family of font1");74 this.isEqual(font1.fontSize, "12px", "Size of font1");75 this.isEqual(font1.fontStyle, "italic", "Style of font1");76 this.isEqual(font1.fontWeight, "bold", "Weight of font1");77 this.isEqual(font1.textDecoration, "underline", "Text decoration of font1");78 this.isEqual(font1.lineHeight, 1.5, "Line height of font1");79 80 var font2 = t.resolveFont("font2");81 this.isEqual(font2.fontFamily, "Droid", "Font family of font2");82 this.isEqual(font0.fontSize, "16px", "Size of font2");83 this.isEqual(font0.fontStyle, "normal", "Style of font2");84 this.isEqual(font0.fontWeight, "normal", "Weight of font2");85 this.isEqual(font0.textDecoration, "none", "Text decoration of font2");86 this.isEqual(font0.lineHeight, 1.0, "Line height of font2");87 88 this.isNull(t.resolveFont("font3"),"font3 is not set");89 });90 suite.test("styles", function() {91 var t = new unify.theme.Theme({92 styles: {93 "a" : {94 style : function(state) {95 return {96 a : true97 };98 }99 },100 "b" : {101 include : "a"102 },103 "c" : {104 include : "b",105 style : function(state) {106 return {107 c : true108 };109 }110 },111 "d" : {112 style : function(state) {113 return {114 d : true115 };116 }117 },118 "e": "a"119 }120 });121 122 this.isEqual(t.resolveStyle("a").a, true, "Appearance a style a");123 this.isEqual(t.resolveStyle("b").a, true, "Appearance b style a");124 this.isEqual(t.resolveStyle("c").a, true, "Appearance c style a");125 this.isEqual(t.resolveStyle("c").c, true, "Appearance c style c");126 this.isEqual(t.resolveStyle("d").d, true, "Appearance d style d");127 this.isEqual(t.resolveStyle("e").a, true, "Appearance e style a");128 this.isEqual(t.resolveStyle("z"), null, "Appearance z is null");129 });130 suite.test("inherited styles", function() {131 var t1 = new unify.theme.Theme({132 styles: {133 "a" : {134 style : function(state) {135 return {136 a1 : true,137 a3 : "1"138 };139 }140 }141 }142 });143 var t2 = new unify.theme.Theme({144 include: t1,145 styles: {146 "a" : {147 style : function(state) {148 return {149 a2 : true,150 a3 : "2"151 };152 }153 }154 }155 });156 157 this.isEqual(t2.resolveStyle("a").a1, true, "Appearance a style a1");158 this.isEqual(t2.resolveStyle("a").a2, true, "Appearance a style a2");159 this.isEqual(t2.resolveStyle("a").a3, "2", "Appearance a style a3");160 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('wpt');2 if (!err) {3 console.log(data);4 } else {5 console.log(err);6 }7});

Full Screen

Using AI Code Generation

copy

Full Screen

1var test = require('wptext.js');2test.testFont("This is a test");3exports.testFont = function(text) {4 console.log(text);5};6var test = require('wptext.js');7test.testFont("This is a test");8exports.testFont = function(text) {9 console.log(text);10};11exports.testFont = testFont(text) {12 console.log(text);13};

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