How to use formatError method in Playwright Internal

Best JavaScript code snippet using playwright-internal

json_schema_test.js

Source:json_schema_test.js Github

copy

Full Screen

...52function assertEqualSets(set1, set2) {53 assertListConsistsOfElements(set1, set2);54 assertListConsistsOfElements(set2, set1);55}56function formatError(key, replacements) {57 return JSONSchemaValidator.formatError(key, replacements);58}59function testFormatError() {60 AssertTrue(formatError("propertyRequired") == "Property is required.");61 AssertTrue(formatError("invalidEnum", ["foo, bar"]) ==62 "Value must be one of: [foo, bar].");63 AssertTrue(formatError("invalidType", ["foo", "bar"]) ==64 "Expected 'foo' but got 'bar'.");65}66function testComplex() {67 var schema = {68 type: "array",69 items: [70 {71 type: "object",72 properties: {73 id: {74 type: "integer",75 minimum: 176 },77 url: {78 type: "string",79 pattern: /^https?\:/,80 optional: true81 },82 index: {83 type: "integer",84 minimum: 0,85 optional: true86 },87 selected: {88 type: "boolean",89 optional: true90 }91 }92 },93 { type: "function", optional: true },94 { type: "function", optional: true }95 ]96 };97 var instance = [98 {99 id: 42,100 url: "http://www.google.com/",101 index: 2,102 selected: true103 },104 function(){},105 function(){}106 ];107 assertValid("", instance, schema);108 instance.length = 2;109 assertValid("", instance, schema);110 instance.length = 1;111 instance.push({});112 assertNotValid("", instance, schema,113 [formatError("invalidType", ["function", "object"])]);114 instance[1] = function(){};115 instance[0].url = "foo";116 assertNotValid("", instance, schema,117 [formatError("stringPattern",118 [schema.items[0].properties.url.pattern])]);119 delete instance[0].url;120 assertValid("", instance, schema);121 instance[0].id = 0;122 assertNotValid("", instance, schema,123 [formatError("numberMinValue",124 [schema.items[0].properties.id.minimum])]);125}126function testEnum() {127 var schema = {128 enum: ["foo", 42, false]129 };130 assertValid("", "foo", schema);131 assertValid("", 42, schema);132 assertValid("", false, schema);133 assertNotValid("", "42", schema, [formatError("invalidEnum",134 [schema.enum.join(", ")])]);135 assertNotValid("", null, schema, [formatError("invalidEnum",136 [schema.enum.join(", ")])]);137}138function testChoices() {139 var schema = {140 choices: [141 { type: "null" },142 { type: "undefined" },143 { type: "integer", minimum:42, maximum:42 },144 { type: "object", properties: { foo: { type: "string" } } }145 ]146 }147 assertValid("", null, schema);148 assertValid("", undefined, schema);149 assertValid("", 42, schema);150 assertValid("", {foo: "bar"}, schema);151 assertNotValid("", "foo", schema, [formatError("invalidChoice", [])]);152 assertNotValid("", [], schema, [formatError("invalidChoice", [])]);153 assertNotValid("", {foo: 42}, schema, [formatError("invalidChoice", [])]);154}155function testExtends() {156 var parent = {157 type: "number"158 }159 var schema = {160 extends: parent161 };162 assertValid("", 42, schema);163 assertNotValid("", "42", schema,164 [formatError("invalidType", ["number", "string"])]);165 // Make the derived schema more restrictive166 parent.minimum = 43;167 assertNotValid("", 42, schema, [formatError("numberMinValue", [43])]);168 assertValid("", 43, schema);169}170function testObject() {171 var schema = {172 properties: {173 "foo": {174 type: "string"175 },176 "bar": {177 type: "integer"178 }179 }180 };181 assertValid("Object", {foo:"foo", bar:42}, schema);182 assertNotValid("Object", {foo:"foo", bar:42,"extra":true}, schema,183 [formatError("unexpectedProperty")]);184 assertNotValid("Object", {foo:"foo"}, schema,185 [formatError("propertyRequired")]);186 assertNotValid("Object", {foo:"foo", bar:"42"}, schema,187 [formatError("invalidType", ["integer", "string"])]);188 schema.additionalProperties = { type: "any" };189 assertValid("Object", {foo:"foo", bar:42, "extra":true}, schema);190 assertValid("Object", {foo:"foo", bar:42, "extra":"foo"}, schema);191 schema.additionalProperties = { type: "boolean" };192 assertValid("Object", {foo:"foo", bar:42, "extra":true}, schema);193 assertNotValid("Object", {foo:"foo", bar:42, "extra":"foo"}, schema,194 [formatError("invalidType", ["boolean", "string"])]);195 schema.properties.bar.optional = true;196 assertValid("Object", {foo:"foo", bar:42}, schema);197 assertValid("Object", {foo:"foo"}, schema);198 assertValid("Object", {foo:"foo", bar:null}, schema);199 assertValid("Object", {foo:"foo", bar:undefined}, schema);200 assertNotValid("Object", {foo:"foo", bar:"42"}, schema,201 [formatError("invalidType", ["integer", "string"])]);202}203function testTypeReference() {204 var referencedTypes = [205 {206 id: "MinLengthString",207 type: "string",208 minLength: 2209 },210 {211 id: "Max10Int",212 type: "integer",213 maximum: 10214 }215 ];216 var schema = {217 type: "object",218 properties: {219 "foo": {220 type: "string"221 },222 "bar": {223 $ref: "Max10Int"224 },225 "baz": {226 $ref: "MinLengthString"227 }228 }229 };230 var schemaInlineReference = {231 type: "object",232 properties: {233 "foo": {234 type: "string"235 },236 "bar": {237 id: "NegativeInt",238 type: "integer",239 maximum: 0240 },241 "baz": {242 $ref: "NegativeInt"243 }244 }245 }246 // Valid type references externally added.247 assertValid("", {foo:"foo",bar:4,baz:"ab"}, schema, referencedTypes);248 // Valida type references internally defined.249 assertValid("", {foo:"foo",bar:-4,baz:-2}, schemaInlineReference);250 // Failures in validation, but succesful schema reference.251 assertNotValid("", {foo:"foo",bar:4,baz:"a"}, schema,252 [formatError("stringMinLength", [2])], referencedTypes);253 assertNotValid("", {foo:"foo",bar:20,baz:"abc"}, schema,254 [formatError("numberMaxValue", [10])], referencedTypes);255 // Remove MinLengthString type.256 referencedTypes.shift();257 assertNotValid("", {foo:"foo",bar:4,baz:"ab"}, schema,258 [formatError("unknownSchemaReference", ["MinLengthString"])],259 referencedTypes);260 // Remove internal type "NegativeInt"261 delete schemaInlineReference.properties.bar;262 assertNotValid("", {foo:"foo",baz:-2}, schemaInlineReference,263 [formatError("unknownSchemaReference", ["NegativeInt"])]);264}265function testArrayTuple() {266 var schema = {267 items: [268 {269 type: "string"270 },271 {272 type: "integer"273 }274 ]275 };276 assertValid("Array", ["42", 42], schema);277 assertNotValid("Array", ["42", 42, "anything"], schema,278 [formatError("arrayMaxItems", [schema.items.length])]);279 assertNotValid("Array", ["42"], schema, [formatError("itemRequired")]);280 assertNotValid("Array", [42, 42], schema,281 [formatError("invalidType", ["string", "integer"])]);282 schema.additionalProperties = { type: "any" };283 assertValid("Array", ["42", 42, "anything"], schema);284 assertValid("Array", ["42", 42, []], schema);285 schema.additionalProperties = { type: "boolean" };286 assertNotValid("Array", ["42", 42, "anything"], schema,287 [formatError("invalidType", ["boolean", "string"])]);288 assertValid("Array", ["42", 42, false], schema);289 schema.items[0].optional = true;290 assertValid("Array", ["42", 42], schema);291 assertValid("Array", [, 42], schema);292 assertValid("Array", [null, 42], schema);293 assertValid("Array", [undefined, 42], schema);294 assertNotValid("Array", [42, 42], schema,295 [formatError("invalidType", ["string", "integer"])]);296}297function testArrayNonTuple() {298 var schema = {299 items: {300 type: "string"301 },302 minItems: 2,303 maxItems: 3304 };305 assertValid("Array", ["x", "x"], schema);306 assertValid("Array", ["x", "x", "x"], schema);307 assertNotValid("Array", ["x"], schema,308 [formatError("arrayMinItems", [schema.minItems])]);309 assertNotValid("Array", ["x", "x", "x", "x"], schema,310 [formatError("arrayMaxItems", [schema.maxItems])]);311 assertNotValid("Array", [42], schema,312 [formatError("arrayMinItems", [schema.minItems]),313 formatError("invalidType", ["string", "integer"])]);314}315function testString() {316 var schema = {317 minLength: 1,318 maxLength: 10,319 pattern: /^x/320 };321 assertValid("String", "x", schema);322 assertValid("String", "xxxxxxxxxx", schema);323 assertNotValid("String", "y", schema,324 [formatError("stringPattern", [schema.pattern])]);325 assertNotValid("String", "xxxxxxxxxxx", schema,326 [formatError("stringMaxLength", [schema.maxLength])]);327 assertNotValid("String", "", schema,328 [formatError("stringMinLength", [schema.minLength]),329 formatError("stringPattern", [schema.pattern])]);330}331function testNumber() {332 var schema = {333 minimum: 1,334 maximum: 100,335 maxDecimal: 2336 };337 assertValid("Number", 1, schema);338 assertValid("Number", 50, schema);339 assertValid("Number", 100, schema);340 assertValid("Number", 88.88, schema);341 assertNotValid("Number", 0.5, schema,342 [formatError("numberMinValue", [schema.minimum])]);343 assertNotValid("Number", 100.1, schema,344 [formatError("numberMaxValue", [schema.maximum])]);345 assertNotValid("Number", 100.111, schema,346 [formatError("numberMaxValue", [schema.maximum]),347 formatError("numberMaxDecimal", [schema.maxDecimal])]);348 var nan = 0/0;349 AssertTrue(isNaN(nan));350 assertNotValid("Number", nan, schema,351 [formatError("numberFiniteNotNan", ["NaN"])]);352 assertNotValid("Number", Number.POSITIVE_INFINITY, schema,353 [formatError("numberFiniteNotNan", ["Infinity"]),354 formatError("numberMaxValue", [schema.maximum])355 ]);356 assertNotValid("Number", Number.NEGATIVE_INFINITY, schema,357 [formatError("numberFiniteNotNan", ["-Infinity"]),358 formatError("numberMinValue", [schema.minimum])359 ]);360}361function testIntegerBounds() {362 assertValid("Number", 0, {type:"integer"});363 assertValid("Number", -1, {type:"integer"});364 assertValid("Number", 2147483647, {type:"integer"});365 assertValid("Number", -2147483648, {type:"integer"});366 assertNotValid("Number", 0.5, {type:"integer"},367 [formatError("numberIntValue", [])]);368 assertNotValid("Number", 10000000000, {type:"integer"},369 [formatError("numberIntValue", [])]);370 assertNotValid("Number", 2147483647.5, {type:"integer"},371 [formatError("numberIntValue", [])]);372 assertNotValid("Number", 2147483648, {type:"integer"},373 [formatError("numberIntValue", [])]);374 assertNotValid("Number", 2147483649, {type:"integer"},375 [formatError("numberIntValue", [])]);376 assertNotValid("Number", -2147483649, {type:"integer"},377 [formatError("numberIntValue", [])]);378}379function testType() {380 // valid381 assertValid("Type", {}, {type:"object"});382 assertValid("Type", [], {type:"array"});383 assertValid("Type", function(){}, {type:"function"});384 assertValid("Type", "foobar", {type:"string"});385 assertValid("Type", "", {type:"string"});386 assertValid("Type", 88.8, {type:"number"});387 assertValid("Type", 42, {type:"number"});388 assertValid("Type", 0, {type:"number"});389 assertValid("Type", 42, {type:"integer"});390 assertValid("Type", 0, {type:"integer"});391 assertValid("Type", true, {type:"boolean"});392 assertValid("Type", false, {type:"boolean"});393 assertValid("Type", null, {type:"null"});394 assertValid("Type", undefined, {type:"undefined"});395 // not valid396 assertNotValid("Type", [], {type: "object"},397 [formatError("invalidType", ["object", "array"])]);398 assertNotValid("Type", null, {type: "object"},399 [formatError("invalidType", ["object", "null"])]);400 assertNotValid("Type", function(){}, {type: "object"},401 [formatError("invalidType", ["object", "function"])]);402 assertNotValid("Type", 42, {type: "array"},403 [formatError("invalidType", ["array", "integer"])]);404 assertNotValid("Type", 42, {type: "string"},405 [formatError("invalidType", ["string", "integer"])]);406 assertNotValid("Type", "42", {type: "number"},407 [formatError("invalidType", ["number", "string"])]);408 assertNotValid("Type", 88.8, {type: "integer"},409 [formatError("invalidTypeIntegerNumber")]);410 assertNotValid("Type", 1, {type: "boolean"},411 [formatError("invalidType", ["boolean", "integer"])]);412 assertNotValid("Type", false, {type: "null"},413 [formatError("invalidType", ["null", "boolean"])]);414 assertNotValid("Type", undefined, {type: "null"},415 [formatError("invalidType", ["null", "undefined"])]);416 assertNotValid("Type", {}, {type: "function"},417 [formatError("invalidType", ["function", "object"])]);418}419function testGetAllTypesForSchema() {420 var referencedTypes = [421 {422 id: "ChoicesRef",423 choices: [424 { type: "integer" },425 { type: "string" }426 ]427 },428 {429 id: "ObjectRef",430 type: "object",431 }432 ];433 var arraySchema = {434 type: "array"435 };436 var choicesSchema = {437 choices: [438 { type: "object" },439 { type: "function" }440 ]441 };442 var objectRefSchema = {443 $ref: "ObjectRef"444 };445 var complexSchema = {446 choices: [447 { $ref: "ChoicesRef" },448 { type: "function" },449 { $ref: "ObjectRef" }450 ]451 };452 var validator = new JSONSchemaValidator();453 validator.addTypes(referencedTypes);454 var arraySchemaTypes = validator.getAllTypesForSchema(arraySchema);455 assertEqualSets(arraySchemaTypes, ["array"]);456 var choicesSchemaTypes = validator.getAllTypesForSchema(choicesSchema);457 assertEqualSets(choicesSchemaTypes, ["object", "function"]);458 var objectRefSchemaTypes = validator.getAllTypesForSchema(objectRefSchema);459 assertEqualSets(objectRefSchemaTypes, ["object"]);460 var complexSchemaTypes = validator.getAllTypesForSchema(complexSchema);461 assertEqualSets(complexSchemaTypes,462 ["integer", "string", "function", "object"]);463}464function testIsValidSchemaType() {465 var referencedTypes = [466 {467 id: "ChoicesRef",468 choices: [469 { type: "integer" },470 { type: "string" }471 ]472 }473 ];474 var objectSchema = {475 type: "object",476 optional: true477 };478 var complexSchema = {479 choices: [480 { $ref: "ChoicesRef" },481 { type: "function" },482 ]483 };484 var validator = new JSONSchemaValidator();485 validator.addTypes(referencedTypes);486 AssertTrue(validator.isValidSchemaType("object", objectSchema));487 AssertTrue(!validator.isValidSchemaType("integer", objectSchema));488 AssertTrue(!validator.isValidSchemaType("array", objectSchema));489 AssertTrue(validator.isValidSchemaType("null", objectSchema));490 AssertTrue(validator.isValidSchemaType("undefined", objectSchema));491 AssertTrue(validator.isValidSchemaType("integer", complexSchema));492 AssertTrue(validator.isValidSchemaType("function", complexSchema));493 AssertTrue(validator.isValidSchemaType("string", complexSchema));494 AssertTrue(!validator.isValidSchemaType("object", complexSchema));495 AssertTrue(!validator.isValidSchemaType("null", complexSchema));496 AssertTrue(!validator.isValidSchemaType("undefined", complexSchema));497}498function testCheckSchemaOverlap() {499 var referencedTypes = [500 {501 id: "ChoicesRef",502 choices: [503 { type: "integer" },504 { type: "string" }505 ]506 },507 {508 id: "ObjectRef",509 type: "object",510 }511 ];512 var arraySchema = {513 type: "array"514 };515 var choicesSchema = {516 choices: [517 { type: "object" },518 { type: "function" }519 ]520 };521 var objectRefSchema = {522 $ref: "ObjectRef"523 };524 var complexSchema = {525 choices: [526 { $ref: "ChoicesRef" },527 { type: "function" },528 { $ref: "ObjectRef" }529 ]530 };531 var validator = new JSONSchemaValidator();532 validator.addTypes(referencedTypes);533 AssertTrue(!validator.checkSchemaOverlap(arraySchema, choicesSchema));534 AssertTrue(!validator.checkSchemaOverlap(arraySchema, objectRefSchema));535 AssertTrue(!validator.checkSchemaOverlap(arraySchema, complexSchema));536 AssertTrue(validator.checkSchemaOverlap(choicesSchema, objectRefSchema));537 AssertTrue(validator.checkSchemaOverlap(choicesSchema, complexSchema));538 AssertTrue(validator.checkSchemaOverlap(objectRefSchema, complexSchema));539}540function testInstanceOf() {541 function Animal() {};542 function Cat() {};543 function Dog() {};544 Cat.prototype = new Animal;545 Cat.prototype.constructor = Cat;546 Dog.prototype = new Animal;547 Dog.prototype.constructor = Dog;548 var cat = new Cat();549 var dog = new Dog();550 var num = new Number(1);551 // instanceOf should check type by walking up prototype chain.552 assertValid("", cat, {type:"object", isInstanceOf:"Cat"});553 assertValid("", cat, {type:"object", isInstanceOf:"Animal"});554 assertValid("", cat, {type:"object", isInstanceOf:"Object"});555 assertValid("", dog, {type:"object", isInstanceOf:"Dog"});556 assertValid("", dog, {type:"object", isInstanceOf:"Animal"});557 assertValid("", dog, {type:"object", isInstanceOf:"Object"});558 assertValid("", num, {type:"object", isInstanceOf:"Number"});559 assertValid("", num, {type:"object", isInstanceOf:"Object"});560 assertNotValid("", cat, {type:"object", isInstanceOf:"Dog"},561 [formatError("notInstance", ["Dog"])]);562 assertNotValid("", dog, {type:"object", isInstanceOf:"Cat"},563 [formatError("notInstance", ["Cat"])]);564 assertNotValid("", cat, {type:"object", isInstanceOf:"String"},565 [formatError("notInstance", ["String"])]);566 assertNotValid("", dog, {type:"object", isInstanceOf:"String"},567 [formatError("notInstance", ["String"])]);568 assertNotValid("", num, {type:"object", isInstanceOf:"Array"},569 [formatError("notInstance", ["Array"])]);570 assertNotValid("", num, {type:"object", isInstanceOf:"String"},571 [formatError("notInstance", ["String"])]);572}573// Tests exposed to schema_unittest.cc.574exports.testFormatError = testFormatError;575exports.testComplex = testComplex;576exports.testEnum = testEnum;577exports.testExtends = testExtends;578exports.testObject = testObject;579exports.testArrayTuple = testArrayTuple;580exports.testArrayNonTuple = testArrayNonTuple;581exports.testString = testString;582exports.testNumber = testNumber;583exports.testIntegerBounds = testIntegerBounds;584exports.testType = testType;585exports.testTypeReference = testTypeReference;...

Full Screen

Full Screen

reporter.spec.js

Source:reporter.spec.js Github

copy

Full Screen

...21 })22 it('should call config.formatError if defined', () => {23 const spy = sandbox.spy()24 formatError = m.createErrorFormatter({ basePath: '', formatError: spy }, emitter)25 formatError()26 expect(spy).to.have.been.calledOnce27 })28 it('should not call config.formatError if not defined', () => {29 const spy = sandbox.spy()30 formatError()31 expect(spy).not.to.have.been.calledOnce32 })33 it('should pass the error message as the first config.formatError argument', () => {34 const ERROR = 'foo bar'35 const spy = sandbox.spy()36 formatError = m.createErrorFormatter({ basePath: '', formatError: spy }, emitter)37 formatError(ERROR)38 expect(spy.firstCall.args[0]).to.equal(ERROR)39 })40 it('should display the exact error returned by config.formatError', () => {41 const formattedError = 'A new error'42 formatError = m.createErrorFormatter({ basePath: '', formatError: () => formattedError }, emitter)43 expect(formatError('Something', '\t')).to.equal(formattedError)44 })45 it('should indent', () => {46 expect(formatError('Something', '\t')).to.equal('\tSomething\n')47 })48 it('should handle empty message', () => {49 expect(formatError(null)).to.equal('\n')50 })51 it('should handle arbitrary error objects', () => {52 expect(53 formatError({ hello: 'world' })54 ).to.equal(55 JSON.stringify({ hello: 'world' }) + '\n'56 )57 })58 it('should handle error objects', () => {59 expect(60 formatError(new Error('fail'))61 ).to.equal(62 'fail\n'63 )64 })65 it('should remove specified hostname from files', () => {66 expect(formatError('file http://localhost:8080/base/usr/a.js and http://127.0.0.1:8080/absolute/home/b.js')).to.be.equal('file usr/a.js and http://127.0.0.1:8080/home/b.js\n')67 })68 it('should remove shas', () => {69 const ERROR = 'file http://localhost:8080/base/usr/file.js?6e31cb249ee5b32d91f37ea516ca0f84bddc5aa9 and http://127.0.0.1:8080/absolute/home/file.js?6e31cb249ee5b32d91f37ea516ca0f84bddc5aa9'70 expect(formatError(ERROR)).to.be.equal('file usr/file.js and http://127.0.0.1:8080/home/file.js\n')71 })72 it('should indent all lines', () => {73 expect(formatError('first\nsecond\nthird', '\t')).to.equal('\tfirst\n\tsecond\n\tthird\n')74 })75 it('should restore base paths', () => {76 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter)77 expect(formatError('at http://localhost:123/base/a.js?123')).to.equal('at a.js\n')78 })79 it('should restore urlRoot paths', () => {80 formatError = m.createErrorFormatter({ urlRoot: '/__karma__', basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter)81 expect(formatError('at http://localhost:123/__karma__/base/sub/a.js?123')).to.equal('at sub/a.js\n')82 })83 it('should restore absolute paths', () => {84 const ERROR = 'at http://localhost:8080/absolute/usr/path.js?6e31cb249ee5b32d91f37ea516ca0f84bddc5aa9'85 expect(formatError(ERROR)).to.equal('at /usr/path.js\n')86 })87 it('should preserve line numbers', () => {88 const ERROR = 'at http://localhost:8080/absolute/usr/path.js?6e31cb249ee5b32d91f37ea516ca0f84bddc5aa9:2'89 expect(formatError(ERROR)).to.equal('at /usr/path.js:2\n')90 })91 it('should preserve absolute word', () => {92 const ERROR = 'contains absolute'93 expect(formatError(ERROR)).to.equal('contains absolute\n')94 })95 it('should preserve base word', () => {96 const ERROR = 'contains base'97 expect(formatError(ERROR)).to.equal('contains base\n')98 })99 describe('source maps', () => {100 let originalPositionForCallCount = 0101 let sourceMappingPath = null102 class MockSourceMapConsumer {103 constructor (sourceMap) {104 this.source = sourceMap.content.replace('SOURCE MAP ', sourceMappingPath)105 }106 originalPositionFor (position) {107 originalPositionForCallCount++108 if (position.line === 0) {109 throw new TypeError('Line must be greater than or equal to 1, got 0')110 }111 return {112 source: this.source,113 line: position.line + 2,114 column: position.column + 2115 }116 }117 }118 beforeEach(() => {119 originalPositionForCallCount = 0120 sourceMappingPath = '/original/'121 })122 MockSourceMapConsumer.GREATEST_LOWER_BOUND = 1123 MockSourceMapConsumer.LEAST_UPPER_BOUND = 2124 it('should rewrite stack traces', (done) => {125 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)126 const servedFiles = [new File('/some/base/a.js'), new File('/some/base/b.js')]127 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }128 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }129 emitter.emit('file_list_modified', { served: servedFiles })130 _.defer(() => {131 const ERROR = 'at http://localhost:123/base/b.js:2:6'132 expect(formatError(ERROR)).to.equal('at /original/b.js:4:8 <- b.js:2:6\n')133 done()134 })135 })136 it('should rewrite stack traces (when basePath is empty)', (done) => {137 formatError = m.createErrorFormatter({ basePath: '', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)138 const servedFiles = [new File('/a.js'), new File('/b.js')]139 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }140 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }141 emitter.emit('file_list_modified', { served: servedFiles })142 _.defer(() => {143 const ERROR = 'at http://localhost:123/base/b.js:2:6'144 expect(formatError(ERROR)).to.equal('at /original/b.js:4:8 <- b.js:2:6\n')145 done()146 })147 })148 it('should rewrite stack traces to the first column when no column is given', (done) => {149 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)150 const servedFiles = [new File('/some/base/a.js'), new File('/some/base/b.js')]151 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }152 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }153 emitter.emit('file_list_modified', { served: servedFiles })154 _.defer(() => {155 const ERROR = 'at http://localhost:123/base/b.js:2'156 expect(formatError(ERROR)).to.equal('at /original/b.js:4:3 <- b.js:2\n')157 done()158 })159 })160 it('should rewrite relative url stack traces', (done) => {161 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)162 const servedFiles = [new File('/some/base/a.js'), new File('/some/base/b.js')]163 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }164 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }165 emitter.emit('file_list_modified', { served: servedFiles })166 _.defer(() => {167 const ERROR = 'at /base/b.js:2:6'168 expect(formatError(ERROR)).to.equal('at /original/b.js:4:8 <- b.js:2:6\n')169 done()170 })171 })172 it('should resolve relative urls from source maps', (done) => {173 sourceMappingPath = 'original/' // Note: relative path.174 formatError = m.createErrorFormatter({ basePath: '/some/base' }, emitter, MockSourceMapConsumer)175 const servedFiles = [new File('/some/base/path/a.js')]176 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.fancyjs' }177 emitter.emit('file_list_modified', { served: servedFiles })178 _.defer(() => {179 const ERROR = 'at /base/path/a.js:2:6'180 expect(formatError(ERROR)).to.equal('at path/original/a.fancyjs:4:8 <- path/a.js:2:6\n')181 done()182 })183 })184 it('should fall back to non-source-map format if originalPositionFor throws', (done) => {185 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)186 const servedFiles = [new File('/some/base/a.js'), new File('/some/base/b.js')]187 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }188 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }189 emitter.emit('file_list_modified', { served: servedFiles })190 _.defer(() => {191 const ERROR = 'at http://localhost:123/base/b.js:0:0'192 expect(formatError(ERROR)).to.equal('at b.js\n')193 done()194 })195 })196 it('should not try to use source maps when no line is given', (done) => {197 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)198 const servedFiles = [new File('/some/base/a.js'), new File('/some/base/b.js')]199 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }200 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }201 emitter.emit('file_list_modified', { served: servedFiles })202 _.defer(() => {203 const ERROR = 'at http://localhost:123/base/b.js'204 expect(formatError(ERROR)).to.equal('at b.js\n')205 expect(originalPositionForCallCount).to.equal(0)206 done()207 })208 })209 it('should not try to match domains with spaces', (done) => {210 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 9876 }, emitter, MockSourceMapConsumer)211 const servedFiles = [new File('/some/base/a.js'), new File('/some/base/b.js')]212 servedFiles[0].sourceMap = { content: 'SOURCE MAP a.js' }213 servedFiles[1].sourceMap = { content: 'SOURCE MAP b.js' }214 emitter.emit('file_list_modified', { served: servedFiles })215 _.defer(() => {216 const ERROR = '"http://localhost:9876"\n at /base/b.js:2:6'217 expect(formatError(ERROR)).to.equal('"http://localhost:9876"\n at /original/b.js:4:8 <- b.js:2:6\n')218 done()219 })220 })221 describe('Windows', () => {222 formatError = null223 let servedFiles = null224 beforeEach(() => {225 formatError = m.createErrorFormatter({ basePath: '/some/base', hostname: 'localhost', port: 123 }, emitter, MockSourceMapConsumer)226 servedFiles = [new File('C:/a/b/c.js')]227 servedFiles[0].sourceMap = { content: 'SOURCE MAP b.js' }228 })229 it('should correct rewrite stack traces without sha', (done) => {230 emitter.emit('file_list_modified', { served: servedFiles })231 _.defer(() => {232 const ERROR = 'at http://localhost:123/absoluteC:/a/b/c.js:2:6'233 expect(formatError(ERROR)).to.equal('at c:/original/b.js:4:8 <- C:/a/b/c.js:2:6\n')234 done()235 })236 })237 it('should correct rewrite stack traces with sha', (done) => {238 emitter.emit('file_list_modified', { served: servedFiles })239 _.defer(() => {240 const ERROR = 'at http://localhost:123/absoluteC:/a/b/c.js?da39a3ee5e6:2:6'241 expect(formatError(ERROR)).to.equal('at c:/original/b.js:4:8 <- C:/a/b/c.js:2:6\n')242 done()243 })244 })245 })246 })247 })...

Full Screen

Full Screen

productionApp.js

Source:productionApp.js Github

copy

Full Screen

1const express = require("express");2const Web3 = require("web3");3const app = express();4app.use(express.json());5const ethNetwork = process.env.ETH_NETWORK;6const BankId = process.env.BANK_ID;7const GAS = process.env.GAS_VALUE;8const web3 = new Web3(new Web3.providers.HttpProvider(ethNetwork));9const Accounts = require("web3-eth-accounts");10const port = process.env.PORT || 3000;11app.listen(port, () => console.log("Server is running on port " + port));12/*****************************************************PRODUCTION ROUTES**************************************************************/13// Production Route - to get all details from bank14app.get("/getBankDetails", (req, res) => {15 // res.json({"Name":"Api is running on cypher server"})16 let TOKENNAME, TOKENSYMBOL, DECIMALUNITS, TOTALSUPPLY;17 contract.methods18 .name()19 .call()20 .then((result) => {21 //res.send(result);22 TOKENNAME = result;23 console.log("name= " + result);24 })25 .catch((err) => {26 TOKENNAME = err;27 console.log("ERROR :" + err);28 let formaterror = `{"errorcode" :"GBD1","message" : "${err}"}`;29 console.log(JSON.parse(formaterror));30 res.json(JSON.parse(formaterror));31 });32 contract.methods33 .symbol()34 .call()35 .then((result) => {36 //res.send(result);37 TOKENSYMBOL = result;38 console.log("Symbol= " + result);39 })40 .catch((err) => {41 TOKENSYMBOL = err;42 console.log("ERROR :" + err);43 let formaterror = `{"errorcode" :"GBD2","message" : "${err}"}`;44 console.log(JSON.parse(formaterror));45 res.json(JSON.parse(formaterror));46 });47 contract.methods48 .decimals()49 .call()50 .then((result) => {51 //res.send(result);52 DECIMALUNITS = result;53 console.log("decimals= " + result);54 })55 .catch((err) => {56 DECIMALUNITS = err;57 console.log("ERROR :" + err);58 let formaterror = `{"errorcode" :"GBD3","message" : "${err}"}`;59 console.log(JSON.parse(formaterror));60 res.json(JSON.parse(formaterror));61 });62 contract.methods63 .totalSupply()64 .call()65 .then((result) => {66 //res.send(result);67 TOTALSUPPLY = result;68 console.log("totalSupply= " + result);69 })70 .catch((err) => {71 TOTALSUPPLY = err;72 console.log("ERROR :" + err);73 let formaterror = `{"errorcode" :"GBD4","message" : "${err}"}`;74 console.log(JSON.parse(formaterror));75 res.json(JSON.parse(formaterror));76 });77 function formatjson() {78 let jsonResult = `{"TokenName" : "${TOKENNAME}","TokenSymbol" : "${TOKENSYMBOL}","DecimalUnits" : "${DECIMALUNITS}","BankID" :"${BankId}","TotalSupply" :"${TOTALSUPPLY}"}`;79 console.log(JSON.parse(jsonResult));80 res.json(JSON.parse(jsonResult));81 }82 setTimeout(formatjson, 5000);83});84// Production Route - to get user details85app.get("/getUserDetails/:USERID", (req, res) => {86 let USERID = req.params.USERID,87 BALANCEOF;88 console.log(USERID);89 contract.methods90 .balanceOf(USERID)91 .call()92 .then((result) => {93 BALANCEOF = result;94 console.log("result= " + result);95 })96 .catch((err) => {97 BALANCEOF = err;98 console.log("ERROR :" + err);99 let formaterror = `{"errorcode" :"GUD","message" : "${err}"}`;100 console.log(JSON.parse(formaterror));101 res.json(JSON.parse(formaterror));102 });103 function formatjson() {104 let jsonResult = `{"UserId" : "${USERID}","UserBalance" : "${BALANCEOF}"}`;105 console.log(JSON.parse(jsonResult));106 res.json(JSON.parse(jsonResult));107 }108 setTimeout(formatjson, 3000);109});110// Production Route - to get user Account111app.get("/createUser", (req, res) => {112 const accounts = new Accounts(ethNetwork);113 const userAccount = web3.eth.accounts.create();114 console.log(115 "user = " + userAccount.address + " private key =" + userAccount.privateKey116 );117 function formatjson() {118 let jsonResult = `{"Address" : "${userAccount.address}","PrivateKey" : "${userAccount.privateKey}"}`;119 console.log(JSON.parse(jsonResult));120 res.json(JSON.parse(jsonResult));121 }122 setTimeout(formatjson, 2000);123});124// Production Route - to post money from bank to user account125/*126Request127{128 "UserId" :"0x01B7Ca9BFf093C69A1F8dA64735A1DBf01B27207",129 "TransferAmmount":10130}131Response132{133 "status": "true",134 "UserId": "0x01B7Ca9BFf093C69A1F8dA64735A1DBf01B27207",135 "TransferAmmount": "10"136}137*/138app.post("/transferFromBank", (req, res) => {139 console.log(req.body.UserId, req.body.TransferAmmount);140 let STAT1, STAT2, UID, UTA;141 UTA = req.body.TransferAmmount;142 UID = req.body.UserId;143 contract.methods144 .transfer(UID, UTA)145 .send({ from: account, gas: GAS })146 .then((result) => {147 console.log(result.status);148 STAT1 = result.status;149 contract.methods150 .burn(UTA.toString())151 .send({ from: account, gas: GAS })152 .then((result) => {153 STAT2 = result.status;154 console.log("STATUS= " + STAT2);155 let jsonResult = `{"status1" : "${STAT1}","status2" : "${STAT2}","UserId":"${UID}","TransferAmmount":"${UTA}"}`;156 res.json(JSON.parse(jsonResult));157 console.log(JSON.parse(jsonResult));158 })159 .catch((err) => {160 console.log("burn :" + err);161 let formaterror = `{"errorcode" :"TFB2","message" : "${err}"}`;162 console.log(JSON.parse(formaterror));163 res.json(JSON.parse(formaterror));164 });165 })166 .catch((err) => {167 console.log("Bank Transfer Error:" + err);168 let formaterror = `{"errorcode" :"TFB1","message" : "${err}"}`;169 console.log(JSON.parse(formaterror));170 res.json(JSON.parse(formaterror));171 return;172 });173});174// Production Route - to post money from one User to Other account175/*176Request177{178 "FromUserId" :"0x01B7Ca9BFf093C69A1F8dA64735A1DBf01B27207",179 "ToUserId" :"0x01B7Ca9BFf093C69A1F8dA64735A1DBf01B27207",180 "TransferAmmount":10181}182Response183{184 "status": "true",185 "FromUserId": "0x01B7Ca9BFf093C69A1F8dA64735A1DBf01B27207",186 "ToUserId": "0x40E767878739529D5D244B3cbd4bC6a2e9438365",187 "TransferAmmount": "10"188}189*/190app.post("/transferBtwUsers", (req, res) => {191 contract.methods192 .transferFrom(193 req.body.FromUserId,194 req.body.ToUserId,195 req.body.TransferAmmount.toString()196 )197 .send({ from: account, gas: GAS })198 .then((result) => {199 console.log(result.status);200 let jsonResult = `{"status" : "${result.status}","FromUserId":"${201 req.body.FromUserId202 }","ToUserId":"${203 req.body.ToUserId204 }","TransferAmmount":"${req.body.TransferAmmount.toString()}"}`;205 res.json(JSON.parse(jsonResult));206 })207 .catch((err) => {208 console.log(" User Transfer Error:" + err);209 let formaterror = `{"errorcode" :"TBWUS","message" : "${err}"}`;210 console.log(JSON.parse(formaterror));211 res.json(JSON.parse(formaterror));212 });213});214// Production Route - to get all user money to bank and delete account215app.get("/DeleteUser/:USERID", (req, res) => {216 let USERID = req.params.USERID,217 BALANCEOF,218 STATUS;219 console.log(USERID);220 contract.methods221 .balanceOf(USERID)222 .call()223 .then((result) => {224 BALANCEOF = result;225 console.log("result= " + result);226 })227 .catch((err) => {228 BALANCEOF = err;229 console.log("ERROR :" + err);230 let formaterror = `{"errorcode" :"DELUSER1","message" : "${err}"}`;231 console.log(JSON.parse(formaterror));232 res.json(JSON.parse(formaterror));233 });234 function formatjson() {235 contract.methods236 .burnFrom(USERID, BALANCEOF)237 .send({ from: account, gas: GAS })238 .then((result) => {239 STATUS = result.status;240 console.log("STATUS= " + STATUS);241 let jsonResult = `{"UserId" : "${USERID}","Status" : "${STATUS}"}`;242 console.log(JSON.parse(jsonResult));243 res.json(JSON.parse(jsonResult));244 })245 .catch((err) => {246 console.log("burn from :" + err);247 let formaterror = `{"errorcode" :"DELUSER2","message" : "${err}"}`;248 console.log(JSON.parse(formaterror));249 res.json(JSON.parse(formaterror));250 });251 }252 setTimeout(formatjson, 3000);253});254//Production Route - to handle default requests255app.get("*", (req, res) => {256 let jsonResult = `{"errorcode" :"GETNOTFOUND","message" : "API IS NOT DEFINED FOR THIS GET ROUTE."}`;257 console.log(JSON.parse(jsonResult));258 res.json(JSON.parse(jsonResult));259});260app.post("*", (req, res) => {261 let jsonResult = `{"errorcode" :"POSTNOTFOUND","message" : "API IS NOT DEFINED FOR THIS POST ROUTE."}`;262 console.log(JSON.parse(jsonResult));263 res.json(JSON.parse(jsonResult));...

Full Screen

Full Screen

validators.js

Source:validators.js Github

copy

Full Screen

1const { FormatError, ConflictError } = require('crowdaids-errors')23function validateId(id) {4 if (typeof id !== 'string') throw new TypeError('id is not a string')5 if (!id.trim().length) throw new FormatError('id is empty or blank')6 if (/\r?\n|\r|\t| /g.test(id)) throw new FormatError('blank spaces around id')7 if (id.length < 24) throw new FormatError('id has less than 24 characters')8}910function validateToken(token) {11 if (typeof token !== 'string') throw new TypeError('token is not a string')12 if (!/[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)$/.test(token)) throw new Error('invalid token')13}1415function validateUsername(username) {16 if (typeof username !== 'string') throw new TypeError('username is not a string')17 if (!username.trim().length) throw new FormatError('username is empty or blank')18 if (/\r?\n|\r|\t| /g.test(username)) throw new FormatError('username has blank spaces')19 if (username.length < 4) throw new FormatError('username has less than 4 characters')2021}2223function validatePassword(password) {24 if (typeof password !== 'string') throw new TypeError('password is not a string')25 if (!password.trim().length) throw new FormatError('password is empty or blank')26 if (/\r?\n|\r|\t| /g.test(password)) throw new FormatError('password has blank spaces')27 if (password.length < 8) throw new FormatError('password has less than 8 characters')28}2930function validateOldPassword(oldPassword) {31 if (typeof oldPassword !== 'string') throw new TypeError('old password is not a string')32 if (!oldPassword.trim().length) throw new FormatError('old password is empty or blank')33 if (/\r?\n|\r|\t| /g.test(oldPassword)) throw new FormatError('old password has blank spaces')34 if (oldPassword.length < 8) throw new FormatError('old password has less than 8 characters')35}3637function validateName(name) {38 if (typeof name !== 'string') throw new TypeError('name is not a string')39 if (!name.trim().length) throw new FormatError('name is empty or blank')40 if (name.trim() !== name) throw new FormatError('blank spaces around name')41}4243function validateEmail(email) {44 if (typeof email !== "string") throw new TypeError("email is not a string")45 if (!email.trim().length) throw new FormatError("email is empty or blank")46 if (!/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) throw new FormatError("is not an e-mail")47}4849function validateData(data) {50 if (typeof data !== 'object' || data.constructor.name !== 'Object') throw new TypeError('data is not an object')5152 const { name, username, email, password, oldPassword } = data5354 if (typeof name !== 'undefined') {55 validateName(name)56 }5758 if (typeof username !== 'undefined') {59 validateUsername(username)60 }6162 if (typeof email !== 'undefined') {63 validateEmail(email)64 }6566 if (typeof oldPassword === 'undefined' && typeof password !== 'undefined') throw new ConflictError('old password is not defined')67 if (typeof password === 'undefined' && typeof oldPassword !== 'undefined') throw new ConflictError('password is not defined')6869 if (typeof password !== 'undefined') {70 validatePassword(password)71 }7273 if (typeof oldPassword !== 'undefined') {74 validateOldPassword(oldPassword)75 }76}7778function validateCallback(callback) {79 if (typeof callback !== 'function') throw new TypeError('callback is not a function')80}8182function validateCreditCardNumber(number) {83 if (typeof number !== 'string') throw new TypeError('credit card number is not a string')84 if (!number.trim().length) throw new FormatError('credit card number is empty or blank')85 if (/\r?\n|\r|\t| /g.test(number)) throw new FormatError('credit card number has blank spaces')86 if (number.length !== 16) throw new FormatError('credit card number doesn\'t have 16 digits')87 if (isNaN(number)) throw new FormatError('credit card number is not numeric')88}8990function validateDate(date) {91 if (!(date instanceof Date)) throw new TypeError('date is not a date')92}9394function validateCreditCardCVV(cvv) {95 if (typeof cvv !== 'string') throw new TypeError('cvv is not a string')96 if (!cvv.trim().length) throw new FormatError('cvv is empty or blank')97 if (/\r?\n|\r|\t| /g.test(cvv)) throw new FormatError('cvv has blank spaces')98 if (cvv.length > 4 || cvv.length < 3) throw new FormatError('cvv doesn\'t have 3 or 4 digits')99 if (isNaN(cvv)) throw new FormatError('cvv is not numeric')100}101102module.exports = {103 validateId,104 validateToken,105 validateUsername,106 validatePassword,107 validateOldPassword,108 validateData,109 validateName,110 validateCallback,111 validateCreditCardNumber,112 validateDate,113 validateCreditCardCVV,114 validateEmail ...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { formatError } = require('@playwright/test/lib/utils/stackTrace');2const { formatError } = require('@playwright/test/lib/utils/stackTrace');3const { formatError } = require('@playwright/test/lib/utils/stackTrace');4const { formatError } = require('@playwright/test/lib/utils/stackTrace');5const { formatError } = require('@playwright/test/lib/utils/stackTrace');6const { formatError } = require('@playwright/test/lib/utils/stackTrace');7const { formatError } = require('@playwright/test/lib/utils/stackTrace');8const { formatError } = require('@playwright/test/lib/utils/stackTrace');9const { formatError } = require('@playwright/test/lib/utils/stackTrace');10const { formatError } = require('@playwright/test/lib/utils/stackTrace');11const { formatError } = require('@playwright/test/lib/utils/stackTrace');12const { formatError } = require('@playwright/test/lib/utils/stackTrace');13const { formatError } = require('@playwright/test/lib/utils/stackTrace');14const { formatError } = require('@playwright/test/lib/utils/stackTrace');15const { formatError } = require('@playwright/test/lib/utils/stackTrace');16const { formatError } = require('@playwright/test/lib/utils/stackTrace');17const { formatError } = require('@playwright/test/lib/utils/stackTrace');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { formatError } = require('playwright/lib/utils/stackTrace');2const { formatError } = require('playwright/lib/utils/stackTrace');3const { formatError } = require('playwright/lib/utils/stackTrace');4const { formatError } = require('playwright/lib/utils/stackTrace');5const { formatError } = require('playwright/lib/utils/stackTrace');6const { formatError } = require('playwright/lib/utils/stackTrace');7const { formatError } = require('playwright/lib/utils/stackTrace');8const { formatError } = require('playwright/lib/utils/stackTrace');9const { formatError } = require('playwright/lib/utils/stackTrace');10const { formatError } = require('playwright/lib/utils/stackTrace');11const { formatError } = require('playwright/lib/utils/stackTrace');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { formatError } = require('playwright/lib/utils/stackTrace');2test('should fail', async ({ page }) => {3 try {4 await page.evaluate(() => {5 throw new Error('foo');6 });7 } catch (e) {8 console.log(formatError(e));9 }10});11 at ExecutionContext._evaluateInternal (/Users/kwonoj/oss/playwright/test.js:3:85)12 at runMicrotasks (<anonymous>)13 at processTicksAndRejections (internal/process/task_queues.js:93:5)

Full Screen

Using AI Code Generation

copy

Full Screen

1const { formatError } = require('@playwright/test/lib/utils/stackTrace');2const { test } = require('@playwright/test');3test('My test', async ({ page }) => {4 const error = new Error('My Error');5 console.log(formatError(error));6});7 at Object.<anonymous> (/home/username/Desktop/test.js:7:15)8 at Module._compile (internal/modules/cjs/loader.js:1137:30)9 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)10 at Module.load (internal/modules/cjs/loader.js:985:32)11 at Function.Module._load (internal/modules/cjs/loader.js:878:14)12 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)13const { test } = require('@playwright/test');14test('My test', async ({ page }) => {15 const error = new Error('My Error');16 const stack = error.stack.split('17');18 stack.splice(0, 1, error.message);19 console.log(stack.join('20'));21});22 at Object.<anonymous> (/home/username/Desktop/test.js:7:15)23 at Module._compile (internal/modules/cjs/loader.js:1137:30)24 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)25 at Module.load (internal/modules/cjs/loader.js:985:32)26 at Function.Module._load (internal/modules/cjs/loader.js:878:14)27 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)

Full Screen

Using AI Code Generation

copy

Full Screen

1const {InternalError} = require('playwright-core/lib/utils/error');2const err = new InternalError('test');3console.log(err.formatError());4 at Object.<anonymous> (/home/xxxx/playwright-test/test.js:5:13)5 at Module._compile (internal/modules/cjs/loader.js:1063:30)6 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)7 at Module.load (internal/modules/cjs/loader.js:928:32)8 at Function.Module._load (internal/modules/cjs/loader.js:769:14)9 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal 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