Best JavaScript code snippet using playwright-internal
basic-gallery.js
Source: basic-gallery.js
...38 var self = this;39 // Handle select change40 self.$filters.on('change', 'select', function(e) {41 e.preventDefault();42 self.parseFilters();43 });44 // Handle reset click45 self.$reset.on('click', function(e) {46 e.preventDefault();47 self.$filters.find('select').val('');48 self.parseFilters();49 });50 },51 // The parseFilters method pulls the value of each active select option52 parseFilters: function() {53 var self = this;54 // loop through each filter group and grap the value from each one.55 for (var i = 0, group; group = self.groups[i]; i++) {56 group.active = group.$dropdown.val();57 }58 self.concatenate();59 },60 // The "concatenate" method will crawl through each group, concatenating filters as desired:61 concatenate: function() {62 var self = this;63 self.outputString = ''; // Reset output string64 for (var i = 0, group; group = self.groups[i]; i++) {65 self.outputString += group.active;66 }67 // If the output string is empty, show all rather than none:68 !self.outputString.length && (self.outputString = 'all');69 //console.log(self.outputString);70 // ^ we can check the console here to take a look at the filter string that is produced71 // Send the output string to MixItUp via the 'filter' method:72 if (self.$container.mixItUp('isLoaded')) {73 self.$container.mixItUp('filter', self.outputString);74 }75 }76 };77 // To keep our code clean and modular, all custom functionality will be contained inside a single object literal called "checkboxFilter".78 var checkboxFilter = {79 // Declare any variables we will need as properties of the object80 $filters: null,81 $reset: null,82 groups: [],83 outputArray: [],84 outputString: '',85 // The "init" method will run on document ready and cache any jQuery objects we will need.86 init: function() {87 var self = this; // As a best practice, in each method we will asign "this" to the variable "self" so that it remains scope-agnostic. We will use it to refer to the parent "checkboxFilter" object so that we can share methods and properties between all parts of the object.88 self.$filters = $('#checkbox-filters');89 self.$reset = $('#mix-reset2');90 self.$container = $('#mix-container');91 self.$filters.find('fieldset').each(function() {92 self.groups.push({93 $inputs: $(this).find('input'),94 active: [],95 tracker: false96 });97 });98 self.bindHandlers();99 },100 // The "bindHandlers" method will listen for whenever a form value changes.101 bindHandlers: function() {102 var self = this;103 self.$filters.on('change', function() {104 self.parseFilters();105 });106 self.$reset.on('click', function(e) {107 e.preventDefault();108 self.$filters[0].reset();109 self.parseFilters();110 });111 },112 // The parseFilters method checks which filters are active in each group:113 parseFilters: function() {114 var self = this;115 // loop through each filter group and add active filters to arrays116 for (var i = 0, group; group = self.groups[i]; i++) {117 group.active = []; // reset arrays118 group.$inputs.each(function() {119 $(this).is(':checked') && group.active.push(this.value);120 });121 group.active.length && (group.tracker = 0);122 }123 self.concatenate();...
parser.filter.spec.js
Source: parser.filter.spec.js
...7const { expect } = chai;8describe('filter', () => {9 const app = express();10 app.use('/filter', (req, response) => {11 parseFilters(req.query, (error, projections) => {12 if (error) {13 throw error;14 } else {15 response.json(projections);16 }17 });18 });19 it('should be a function', () => {20 expect(parseFilters).to.exist;21 expect(parseFilters).to.be.a('function');22 expect(parseFilters.name).to.be.equal('filter');23 expect(parseFilters.length).to.be.equal(2);24 });25 describe('by search', () => {26 it('should parse search query', (done) => {27 const query = { filters: { q: 'a' } };28 parseFilters(JSON.stringify(query), (error, filter) => {29 expect(error).to.not.exist;30 expect(filter).to.exist;31 expect(filter.q).to.exist;32 expect(filter.q).to.be.eql(query.filters.q);33 done(error, filter);34 });35 });36 it('should parse search query', (done) => {37 const query = { q: 'a' };38 parseFilters(JSON.stringify(query), (error, filter) => {39 expect(error).to.not.exist;40 expect(filter).to.exist;41 expect(filter.q).to.exist;42 expect(filter.q).to.be.eql(query.q);43 done(error, filter);44 });45 });46 it('should parse http uri encode search query', (done) => {47 const query = { filters: { q: 'a' } };48 request(app)49 .get('/filter')50 .query(query)51 .expect(200, (error, response) => {52 expect(error).to.not.exist;53 const filter = response.body;54 expect(filter).to.exist;55 expect(filter.q).to.exist;56 expect(filter.q).to.be.eql(query.filters.q);57 done(error, response);58 });59 });60 it('should parse http uri encode search query', (done) => {61 const query = { filters: { q: 'a' } };62 request(app)63 .get('/filter?q=a')64 .expect(200, (error, response) => {65 expect(error).to.not.exist;66 const filter = response.body;67 expect(filter).to.exist;68 expect(filter.q).to.exist;69 expect(filter.q).to.be.eql(query.filters.q);70 done(error, response);71 });72 });73 });74 describe('by comparison query operators', () => {75 const comparisons = {76 $eq: { qty: { $eq: 20 } },77 $gt: { qty: { $gt: 20 } },78 $gte: { qty: { $gte: 20 } },79 $in: { qty: { $in: [5, 15] } },80 $lt: { qty: { $lt: 20 } },81 $lte: { qty: { $lte: 20 } },82 $ne: { qty: { $ne: 20 } },83 $nin: { qty: { $nin: [5, 15] } },84 };85 forEach(comparisons, (comparison, key) => {86 const encoded = qs.stringify({ filters: comparison });87 it(`should parse fields ${key} operator`, (done) => {88 const query = { filters: comparison };89 const next = (error, filter) => {90 expect(error).to.not.exist;91 expect(filter).to.exist;92 expect(filter).to.be.eql(comparison);93 done(error, filter);94 };95 parseFilters(JSON.stringify(query), next);96 });97 it(`should parse ${key} http uri encoded query operator`, (done) => {98 request(app)99 .get(`/filter?${encoded}`)100 .expect(200, (error, response) => {101 expect(error).to.not.exist;102 const filter = response.body;103 expect(filter).to.exist;104 expect(filter).to.be.eql(comparison);105 done(error, response);106 });107 });108 it(`should parse ${key} http json encoded query operator`, (done) => {109 const query = JSON.stringify(comparison);110 request(app)111 .get(`/filter?filter=${query}`)112 .expect(200, (error, response) => {113 expect(error).to.not.exist;114 const filter = response.body;115 expect(filter).to.exist;116 expect(filter).to.be.eql(comparison);117 done(error, response);118 });119 });120 it(`should parse ${key} http query operator`, (done) => {121 const query = { filters: comparison };122 request(app)123 .get('/filter')124 .query(query)125 .expect(200, (error, response) => {126 expect(error).to.not.exist;127 const filter = response.body;128 expect(filter).to.exist;129 expect(filter).to.be.eql(comparison);130 done(error, response);131 });132 });133 });134 });135 describe('by logical query operators', () => {136 const logicals = {137 $and: { $and: [{ price: { $ne: 1.99 } }, { price: { $exists: true } }] },138 $not: { price: { $not: { $gt: 1.99 } } },139 $or: { $or: [{ quantity: { $lt: 20 } }, { price: 10 }] },140 $nor: { $nor: [{ price: 1.99 }, { sale: true }] },141 };142 forEach(logicals, (logical, key) => {143 const encoded = qs.stringify({ filters: logical });144 it(`should parse fields ${key} operator`, (done) => {145 const query = { filters: logical };146 const next = (error, filter) => {147 expect(error).to.not.exist;148 expect(filter).to.exist;149 expect(filter).to.be.eql(logical);150 done(error, filter);151 };152 parseFilters(JSON.stringify(query), next);153 });154 it(`should parse ${key} http uri encoded query operator`, (done) => {155 request(app)156 .get(`/filter?${encoded}`)157 .expect(200, (error, response) => {158 expect(error).to.not.exist;159 const filter = response.body;160 expect(filter).to.exist;161 expect(filter).to.be.eql(logical);162 done(error, response);163 });164 });165 it.skip(`should parse ${key} http json encoded query operator`, (done) => {166 const query = JSON.stringify(logical);167 request(app)168 .get(`/filter?filter=${query}`)169 .expect(200, (error, response) => {170 expect(error).to.not.exist;171 const filter = response.body;172 expect(filter).to.exist;173 expect(filter).to.be.eql(logical);174 done(error, response);175 });176 });177 it.skip(`should parse ${key} http query operator`, (done) => {178 const query = { filters: logical };179 request(app)180 .get('/filter')181 .query(query)182 .expect(200, (error, response) => {183 expect(error).to.not.exist;184 const filter = response.body;185 expect(filter).to.exist;186 expect(filter).to.be.eql(logical);187 done(error, response);188 });189 });190 });191 });192 describe('by element query operators', () => {193 const elements = {194 $exists: { a: { $exists: true } },195 $type: { zipCode: { $type: 'string' } },196 };197 forEach(elements, (element, key) => {198 it(`should parse fields ${key} operator`, (done) => {199 const query = { filters: element };200 const next = (error, filter) => {201 expect(error).to.not.exist;202 expect(filter).to.exist;203 expect(filter).to.be.eql(element);204 done(error, filter);205 };206 parseFilters(JSON.stringify(query), next);207 });208 });209 });210 describe('by evaluation query operators', () => {211 const evaluations = {212 $expr: { $expr: { $gt: ['$spent', '$budget'] } },213 $jsonSchema: {},214 $mod: { qty: { $mod: [4, 0] } },215 $regex: { sku: { $regex: '/789$/' } },216 $text: { $text: { $search: 'coffee' } },217 $$where: {},218 };219 forEach(evaluations, (evaluation, key) => {220 it(`should parse fields ${key} operator`, (done) => {221 const query = { filters: evaluation };222 const next = (error, filter) => {223 expect(error).to.not.exist;224 expect(filter).to.exist;225 expect(filter).to.be.eql(evaluation);226 done(error, filter);227 };228 parseFilters(JSON.stringify(query), next);229 });230 });231 });232 describe('by geospatial query operators', () => {233 const geospatials = {234 $geoIntersects: {235 loc: {236 $geoIntersects: {237 $geometry: {238 type: 'Polygon',239 coordinates: [240 [241 [0, 0],242 [3, 6],243 [6, 1],244 [0, 0],245 ],246 ],247 },248 },249 },250 },251 $geoWithin: {252 loc: {253 $geoWithin: {254 $geometry: {255 type: 'Polygon',256 coordinates: [257 [258 [0, 0],259 [3, 6],260 [6, 1],261 [0, 0],262 ],263 ],264 },265 },266 },267 },268 $near: {269 loc: {270 $near: {271 $geometry: { type: 'Point', coordinates: [-73.9667, 40.78] },272 $minDistance: 1000,273 $maxDistance: 5000,274 },275 },276 },277 $nearSphere: {278 loc: {279 $nearSphere: {280 $geometry: {281 type: 'Point',282 coordinates: [-73.9667, 40.78],283 },284 $minDistance: 1000,285 $maxDistance: 5000,286 },287 },288 },289 $box: {290 loc: {291 $geoWithin: {292 $box: [293 [0, 0],294 [100, 100],295 ],296 },297 },298 },299 $center: {300 loc: {301 $geoWithin: {302 $center: [[-74, 40.74], 10],303 },304 },305 },306 $centerSphere: {307 loc: {308 $geoWithin: {309 $centerSphere: [[-88, 30], 10 / 3963.2],310 },311 },312 },313 $maxDistance: {314 loc: {315 $near: [-74, 40],316 $maxDistance: 10,317 },318 },319 $minDistance: {320 loc: {321 $near: [-74, 40],322 $minDistance: 10,323 },324 },325 $polygon: {326 loc: {327 $geoWithin: {328 $polygon: [329 [0, 0],330 [3, 6],331 [6, 0],332 ],333 },334 },335 },336 };337 forEach(geospatials, (geospatial, key) => {338 it(`should parse fields ${key} operator`, (done) => {339 const query = { filters: geospatial };340 const next = (error, filter) => {341 expect(error).to.not.exist;342 expect(filter).to.exist;343 expect(filter).to.be.eql(geospatial);344 done(error, filter);345 };346 parseFilters(JSON.stringify(query), next);347 });348 });349 });350 describe('by array query operators', () => {351 const arrays = {352 $all: {353 tags: {354 $all: [['ssl', 'security']],355 },356 },357 $elemMatch: { results: { $elemMatch: { $gte: 80, $lt: 85 } } },358 $size: { field: { $size: 1 } },359 };360 forEach(arrays, (array, key) => {361 it(`should parse fields ${key} operator`, (done) => {362 const query = { filters: array };363 const next = (error, filter) => {364 expect(error).to.not.exist;365 expect(filter).to.exist;366 expect(filter).to.be.eql(array);367 done(error, filter);368 };369 parseFilters(JSON.stringify(query), next);370 });371 });372 });...
mongodb-filters.js
Source: mongodb-filters.js
2const assert = require('assert');3const { ObjectId } = require('mongodb');4const MongoDBFilters = require('../lib/mongodb-filters');5describe('MongoDBFilters', () => {6 describe('parseFilters()', () => {7 const getModel = fields => {8 class Model {9 static get fields() {10 return fields;11 }12 }13 return new Model();14 };15 const id = '5df0151dbc1d570011949d86';16 const id2 = '5df0151dbc1d570011949d87';17 const date = new Date();18 it('Should return an empty object if no filters are passed', () => {19 assert.deepStrictEqual(MongoDBFilters.parseFilters(), {});20 });21 it('Should throw if invalid filters are passed', () => {22 assert.throws(() => MongoDBFilters.parseFilters(true));23 assert.throws(() => MongoDBFilters.parseFilters('invalid'));24 });25 it('Should throw if invalid filter types are passed', () => {26 assert.throws(() => MongoDBFilters.parseFilters({27 foo: {28 type: 'unknown',29 value: 'bar'30 }31 }, getModel()));32 });33 it('Should return an empty object if an empty object passed', () => {34 assert.deepStrictEqual(MongoDBFilters.parseFilters({}), {});35 });36 it('Should return an empty object if an empty array passed', () => {37 assert.deepStrictEqual(MongoDBFilters.parseFilters([]), {});38 });39 it('Should accept an unknown filter type if it starts with the $ character', () => {40 const parsedFilters = MongoDBFilters.parseFilters({41 foo: { type: '$lt', value: 10 }42 }, getModel());43 assert.deepStrictEqual(parsedFilters, {44 foo: {45 $lt: 1046 }47 });48 });49 it('Should return the filters as \'equal\' or \'in\' filters when no custom configuration is set', () => {50 const parsedFilters = MongoDBFilters.parseFilters({51 foo: ['bar'],52 baz: 1,53 date,54 nullable: null,55 nullable2: { type: 'notEqual', value: null },56 id57 }, getModel({58 foo: true59 }));60 assert.deepStrictEqual(parsedFilters, {61 foo: {62 $in: ['bar']63 },64 baz: {65 $eq: 166 },67 date: {68 $eq: date69 },70 nullable: {71 $eq: null72 },73 nullable2: {74 $ne: null75 },76 id: {77 $eq: id78 }79 });80 });81 it('Should map the ID fields to ObjectIDs', () => {82 const parsedFilters = MongoDBFilters.parseFilters({83 foo: 'bar',84 baz: 1,85 date,86 id,87 id2: [id, id2]88 }, getModel({89 id: {90 isID: true91 },92 id2: {93 isID: true94 }95 }));96 assert.deepStrictEqual(parsedFilters, {97 foo: {98 $eq: 'bar'99 },100 baz: {101 $eq: 1102 },103 date: {104 $eq: date105 },106 id: {107 $eq: ObjectId(id)108 },109 id2: {110 $in: [ObjectId(id), ObjectId(id2)]111 }112 });113 });114 it('Should use the filters types of filters and model fields in that order', () => {115 const parsedFilters = MongoDBFilters.parseFilters({116 foo: 'bar',117 baz: {118 type: 'notEqual',119 value: 1120 },121 search: 'Some text',122 date,123 id124 }, getModel({125 id: {126 isID: true127 },128 foo: {129 type: 'search'130 },131 search: {132 type: 'text'133 }134 }));135 assert.deepStrictEqual(parsedFilters, {136 foo: {137 $regex: /bar/i138 },139 baz: {140 $ne: 1141 },142 $text: {143 $search: 'Some text',144 $caseSensitive: false,145 $diacriticSensitive: false146 },147 date: {148 $eq: date149 },150 id: {151 $eq: ObjectId(id)152 }153 });154 });155 it('Should return the filters as \'equal\' (not \'in\') filters if type is explicitly is set or passed', () => {156 const parsedFilters = MongoDBFilters.parseFilters({157 foo: ['bar', 'bar2'],158 baz: {159 type: 'equal',160 value: [1, 2]161 },162 date,163 id164 }, getModel({165 foo: {166 type: 'equal'167 }168 }));169 assert.deepStrictEqual(parsedFilters, {170 foo: {171 $eq: ['bar', 'bar2']172 },173 baz: {174 $eq: [1, 2]175 },176 date: {177 $eq: date178 },179 id: {180 $eq: id181 }182 });183 });184 it('Should return the OR filters if they are passed as an array', () => {185 const parsedFilters = MongoDBFilters.parseFilters([186 {187 foo: 'bar'188 },189 {190 baz: {191 type: 'equal',192 value: [1, 2]193 },194 date195 }196 ], getModel());197 assert.deepStrictEqual(parsedFilters, {198 $or: [199 {200 foo: {201 $eq: 'bar'202 }203 },204 {205 baz: {206 $eq: [1, 2]207 },208 date: {209 $eq: date210 }211 }212 ]213 });214 });215 it('Should use the filters names of the model fields', () => {216 const parsedFilters = MongoDBFilters.parseFilters({217 foo: 'bar'218 }, getModel({219 foo: {220 field: 'superfoo'221 }222 }));223 assert.deepStrictEqual(parsedFilters, {224 superfoo: {225 $eq: 'bar'226 }227 });228 });229 it('Should allow multiple filter criteria for the same field', () => {230 const parsedFilters = MongoDBFilters.parseFilters({231 dateFrom: new Date('2019-12-11T00:00:00.000Z'),232 dateTo: new Date('2019-12-11T23:59:59.999Z')233 }, getModel({234 dateFrom: {235 field: 'date',236 type: 'greaterOrEqual'237 },238 dateTo: {239 field: 'date',240 type: 'lesserOrEqual'241 }242 }));243 assert.deepStrictEqual(parsedFilters, {244 date: {...
config.js
Source: config.js
...7 // https://github.com/projectcaluma/ember-caluma/blob/master/tests/dummy/app/templates/docs/testing.md8 this.post("/graphql", graphqlHandler(this), 200);9 this.namespace = "api/v1";10 this.get("/additional-emails", (schema, request) => {11 const query = parseFilters(request, [12 { source: "identity", target: "identityId" },13 ]);14 return schema.additionalEmails.where(query);15 });16 this.post("/additional-emails");17 this.get("/additional-emails/:id");18 this.patch("/additional-emails/:id");19 this.delete("/additional-emails/:id");20 this.get("/phone-numbers", (schema, request) => {21 const query = parseFilters(request, [22 { source: "identity", target: "identityId" },23 ]);24 return schema.phoneNumbers.where(query);25 });26 this.post("/phone-numbers");27 this.get("/phone-numbers/:id");28 this.patch("/phone-numbers/:id");29 this.delete("/phone-numbers/:id");30 this.get("/addresses", (schema, request) => {31 const query = parseFilters(request, [32 { source: "identity", target: "identityId" },33 ]);34 return schema.addresses.where(query);35 });36 this.post("/addresses");37 this.get("/addresses/:id");38 this.patch("/addresses/:id");39 this.delete("/addresses/:id");40 this.options("/addresses", () => {41 return {42 data: {43 actions: {44 POST: {45 country: {46 choices: [47 {48 value: "CH",49 display_name: "Schweiz",50 },51 ],52 },53 },54 },55 },56 };57 });58 this.get("/identities", (schema, request) => {59 const query = parseFilters(request, [60 { source: "isOrganisation", target: "isOrganisation" },61 ]);62 const pageSize = Number(request.queryParams["page[size]"]);63 const pageNumber = Number(request.queryParams["page[number]"] || 1);64 const search = request.queryParams.search?.toLowerCase();65 const keys = ["organisationName", "firstName", "lastName", "email"];66 const result = schema.identities.where(function (identity) {67 let result = !(search || Object.keys(query).length);68 if (search) {69 for (const key of keys) {70 if (identity[key]?.toLowerCase().includes(search)) {71 result = true;72 break;73 }74 }75 }76 if (Object.keys(query).length) {77 for (const key in query) {78 if (String(identity[key]) === query[key]) {79 result = true;80 break;81 }82 }83 }84 return result;85 });86 if (pageSize) {87 const start = (pageNumber - 1) * pageSize;88 const sliced = result.slice(start, start + pageSize);89 const json = this.serializerOrRegistry.serialize(sliced);90 json.meta = {91 pagination: {92 count: result.models.length,93 pages: Math.ceil(result.models.length / pageSize),94 page: pageNumber,95 },96 };97 return json;98 }99 return result;100 });101 this.post("/identities");102 this.get("/identities/:id");103 this.patch("/identities/:id");104 this.delete("/identities/:id");105 this.get("/interests");106 this.post("/interests");107 this.get("/interests/:id");108 this.patch("/interests/:id");109 this.delete("/interests/:id");110 this.get("/interest-categories");111 this.post("/interest-categories");112 this.get("/interest-categories/:id");113 this.patch("/interest-categories/:id");114 this.delete("/interest-categories/:id");115 this.get("/memberships", (schema, request) => {116 const query = parseFilters(request, [117 { source: "identity", target: "identityId" },118 ]);119 return schema.memberships.where(query);120 });121 this.post("/memberships");122 this.get("/memberships/:id");123 this.patch("/memberships/:id");124 this.delete("/memberships/:id");125 this.get("/membership-roles");126 this.post("/membership-roles");127 this.get("/membership-roles/:id");128 this.patch("/membership-roles/:id");129 this.delete("/membership-roles/:id");130 this.get("/snippets", (schema, request) => {131 const query = parseFilters(request, [132 { source: "archived", target: "archived" },133 ]);134 return schema.snippets.where(query);135 });136 this.post("/snippets");137 this.get("/snippets/:id");138 this.patch("/snippets/:id");139 this.get("/org-memberships", (schema, request) => {140 const query = parseFilters(request, [141 { source: "identity", target: "identityId" },142 ]);143 return schema.memberships.where(query);144 });...
query.spec.js
Source: query.spec.js
1import { generateQuery, parseSorts, parseFilters } from 'lib/query'2describe('parseFilters', () => {3 it('parses a single filter with a single value', () => {4 const param = ["manufacturer:DELL"]5 expect(parseFilters(param)).toEqual([["manufacturer", ["dell"]]])6 })7 it('parses a single filter with a multiple values', () => {8 const param = ["manufacturer:DELL,hp"]9 expect(parseFilters(param)).toEqual([["manufacturer", ["dell", "hp"]]])10 })11 it('parses multiple filters', () => {12 const param = ["manufacturer:dell,hp", "simple_category:thin client"]13 expect(parseFilters(param)).toEqual([["manufacturer", ["dell", "hp"]], ["simple_category", ["thin client"]]])14 })15 it('does not parse filters with invalid field names', () => {16 const param = ["manufa:dell"]17 expect(parseFilters(param)).toEqual([])18 })19 it('parses filters with spaces and ampersands', () => {20 const param = ["simple_category:keyboards%20%26%20mice,desktops"]21 expect(parseFilters(param)).toEqual([["simple_category", ["keyboards%20%26%20mice", "desktops"]]])22 })23})24describe('parseSorts', () => {25 it('parses a single sort', () => {26 const param = ["list_price:asc"]27 expect(parseSorts(param)).toEqual([['list_price', 'asc']])28 })29 it('parses multiple sorts', () => {30 const param = ["list_price:asc", "manufacturer:desc"]31 expect(parseSorts(param)).toEqual([['list_price', 'asc'], ['manufacturer', 'desc']])32 })33 it('does not parse sorts with an invalid direction', () => {34 const param = ["list_price:asc", "manufacturer:sca"]35 expect(parseSorts(param)).toEqual([['list_price', 'asc']])...
table.test.js
Source: table.test.js
...46 })47 })48 describe("Testing model parseFilters static methods", () => {49 it('should retrieve text filter with the given narratorId property', () => {50 const filter = TableModel.parseFilters({narratorId: 'foo'})51 expect(filter).toStrictEqual({ narratorId: 'foo'})52 })53 it('should retrieve text filter with the given name property', () => {54 const filter = TableModel.parseFilters({name: 'foo'})55 expect(filter).toStrictEqual({ $text : { $search : 'foo' } })56 })57 it('should retrieve text filter with the given system property', () => {58 const filter = TableModel.parseFilters({system: 'foo'})59 expect(filter).toStrictEqual({ $text : { $search : 'foo' } })60 })61 it('should retrieve text filter with the given tag property', () => {62 const filter = TableModel.parseFilters({tags: 'foo'})63 expect(filter).toStrictEqual({ tags: 'foo' })64 })65 it('should retrieve text filter with the given tag property', () => {66 const filter = TableModel.parseFilters({tags: 'foo', name: 'bar'})67 expect(filter).toStrictEqual({ tags: 'foo', $text : { $search : 'bar' } })68 })69 it('should retrive an $in object if many tags are given', () => {70 const filter = TableModel.parseFilters({tags: ['foo', 'bar']})71 expect(filter).toStrictEqual({ tags: {$in: ['foo', 'bar']} })72 })73 it('should retrieve text filter with the given online property', () => {74 const filter = TableModel.parseFilters({online: 'foo'})75 expect(filter).toStrictEqual({ online: 'foo'})76 })77 it('should retrieve text filter with the given recruiting property', () => {78 const filter = TableModel.parseFilters({recruiting: 'foo'})79 expect(filter).toStrictEqual({ recruiting: 'foo'})80 })81 })...
search.js
Source: search.js
...51 // search,52 orderBy,53 orderDirection,54 } = query;55 const filter = parseFilters(query.filters, schema);56 Model.countDocuments(filter, (err, totalCount) => {57 if (err) return rej(err);58 const absLimit = min(1000, abs(parseInt(limit, 10)) || 0);59 Model60 .find(filter, null, {61 skip: min(abs(parseInt(skip, 10)) || 0, totalCount),62 limit: absLimit,63 })64 .sort(`${orderDirection === 'asc' ? '' : '-'}${orderBy || 'updatedAt'}`)65 // eslint-disable-next-line no-shadow66 .exec((err, data) => {67 if (err) return rej(err);68 try {69 res({...
parse-filters.test.js
Source: parse-filters.test.js
1const test = require('ava')2const parseFilters = require('./parse-filters')3test('parses empty filters', t => {4 t.deepEqual(parseFilters(''), {})5})6test('parses page filter', t => {7 t.deepEqual(parseFilters('?p=%2Fsome%2Furl%2F'), {8 p: '/some/url/'9 })10})11test('parses referrer filter', t => {12 t.deepEqual(parseFilters('?r=https%3A%2F%2Fwww.google.com%2F'), {13 r: 'https://www.google.com/'14 })15})16test('ignores invalid filters', t => {17 t.deepEqual(parseFilters('?invalid=true'), {})...
Using AI Code Generation
1const { parseFilters } = require('playwright/lib/utils/utils');2const filters = parseFilters('browserName=firefox');3const { parseSelector } = require('playwright/lib/utils/utils');4const selector = parseSelector('css=div#id.class', 'body');5console.log(selector);6const { parseTestType } = require('playwright/lib/utils/utils');7const testType = parseTestType('unit');8console.log(testType);9const { parseTestType } = require('playwright/lib/utils/utils');10const testType = parseTestType('unit');11console.log(testType);12const { parseTestType } = require('playwright/lib/utils/utils');13const testType = parseTestType('unit');14console.log(testType);15const { parseTestType } = require('playwright/lib/utils/utils');16const testType = parseTestType('unit');17console.log(testType);18const { parseTestType } = require('playwright/lib/utils/utils');19const testType = parseTestType('unit');20console.log(testType);21const { parseTestType } = require('playwright/lib/utils/utils');22const testType = parseTestType('unit');23console.log(testType);24const { parseTestType } = require('playwright/lib/utils/utils');25const testType = parseTestType('unit');26console.log(testType);27const { parseTestType } = require('playwright/lib/utils/utils');28const testType = parseTestType('unit');29console.log(testType);30const { parseTestType } = require('playwright/lib/utils/utils');31const testType = parseTestType('unit');32console.log(testType);33const { parseTestType } = require('playwright/lib/utils/utils');
Using AI Code Generation
1const { parseFilters } = require('playwright/lib/utils/filters');2const { parseTest } = require('playwright/lib/utils/test');3const { parseTestModifier } = require('playwright/lib/utils/testModifier');4const { parseTestType } = require('playwright/lib/utils/testType');5const test = parseTest('test', parseTestModifier('only'), parseTestType('test'));6const test1 = parseTest('test1', parseTestModifier('only'), parseTestType('test'));7const test2 = parseTest('test2', parseTestModifier('only'), parseTestType('test'));8const filter = parseFilters([test, test1, test2, 'test3']);9console.log(filter);10const { parseFilters } = require('playwright/lib/utils/filters');11const { parseTest } = require('playwright/lib/utils/test');12const { parseTestModifier } = require('playwright/lib/utils/testModifier');13const { parseTestType } = require('playwright/lib/utils/testType');14const filter = parseFilters(['test', 'test1', 'test2', 'test3']);15console.log(filter);16const { parseFilters } = require('playwright/lib/utils/filters');17const { parseTest } = require('playwright/lib/utils/test');18const { parseTestModifier } = require('playwright/lib/utils/testModifier');19const { parseTestType } = require('playwright/lib/utils/testType');20const filter = parseFilters(['test']);21console.log(filter);22const { parseFilters } = require('playwright/lib/utils/filters');23const { parseTest } = require('playwright/lib/utils/test');24const { parseTestModifier } = require('playwright/lib/utils/testModifier');25const { parseTestType } = require
Using AI Code Generation
1const { parseFilters } = require('playwright/lib/server/filters');2const filters = parseFilters('foo,bar,baz');3console.log(filters);4const { parseFilters } = require('playwright/lib/server/filters');5const filters = parseFilters('foo=1,bar=2,baz=3');6console.log(filters);7const { parseFilters } = require('playwright/lib/server/filters');8const filters = parseFilters('foo=1,bar=2,baz=3,foo=4');9console.log(filters);10const { parseFilters } = require('playwright/lib/server/filters');11const filters = parseFilters('foo=1,bar=2,baz=3,foo=4,foo=5');12console.log(filters);13const { parseFilters } = require('playwright/lib/server/filters');14const filters = parseFilters('foo=1,bar=2,baz=3,foo=4,foo=5,foo=6,foo=7');15console.log(filters);16const { parseFilters } = require('playwright/lib/server/filters');17const filters = parseFilters('foo=1,bar=2,baz=3,foo=4,foo=5,foo=6,foo=7,foo=8');
Using AI Code Generation
1const { parseFilters } = require('playwright/lib/utils/filters');2console.log(filters);3page.route()4page.route()5page.route()6page.route()7page.route()
Using AI Code Generation
1const { parseFilters } = require('playwright-core/lib/utils/utils');2const filters = parseFilters('foo=bar, baz=42');3console.log(filters);4const { parseQueryParams } = require('playwright-core/lib/utils/utils');5const params = parseQueryParams('?foo=bar&baz=42');6console.log(params);7const { parseHeaders } = require('playwright-core/lib/utils/utils');8const headers = parseHeaders('foo: bar9baz: 42');10console.log(headers);11const { parseCookies } = require('playwright-core/lib/utils/utils');12const cookies = parseCookies('foo=bar; baz=42');13console.log(cookies);14const { parseSelector } = require('playwright-core/lib/utils/utils');15const selector = parseSelector('text=foo');16console.log(selector);17const { parseTimeout } = require('playwright-core/lib/utils/utils');18const timeout = parseTimeout('1.5min');19console.log(timeout);20const { waitForEvent } = require('playwright-core/lib/utils/utils');21const eventEmitter = new EventEmitter();22const promise = waitForEvent(eventEmitter, 'foo');23eventEmitter.emit('foo', 'bar');24const result = await promise;25console.log(result);26const { waitForEvent } = require('playwright-core/lib/utils/utils');
Jest + Playwright - Test callbacks of event-based DOM library
Is it possible to get the selector from a locator object in playwright?
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
firefox browser does not start in playwright
firefox browser does not start in playwright
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
There are times when developers get stuck with a problem that has to do with version changes. Trying to run the code or test without upgrading the package can result in unexpected errors.
Automation frameworks enable automation testers by simplifying the test development and execution activities. A typical automation framework provides an environment for executing test plans and generating repeatable output. They are specialized tools that assist you in your everyday test automation tasks. Whether it is a test runner, an action recording tool, or a web testing tool, it is there to remove all the hard work from building test scripts and leave you with more time to do quality checks. Test Automation is a proven, cost-effective approach to improving software development. Therefore, choosing the best test automation framework can prove crucial to your test results and QA timeframes.
Have you ever visited a website that only has plain text and images? Most probably, no. It’s because such websites do not exist now. But there was a time when websites only had plain text and images with almost no styling. For the longest time, websites did not focus on user experience. For instance, this is how eBay’s homepage looked in 1999.
These days, development teams depend heavily on feedback from automated tests to evaluate the quality of the system they are working on.
Many theoretical descriptions explain the role of the Scrum Master as a vital member of the Scrum team. However, these descriptions do not provide an honest answer to the fundamental question: “What are the day-to-day activities of a Scrum Master?”
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.
Get 100 minutes of automation test minutes FREE!!