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
firefox browser does not start in playwright
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
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:
Native apps are developed specifically for one platform. Hence they are fast and deliver superior performance. They can be downloaded from various app stores and are not accessible through browsers.
One of the essential parts when performing automated UI testing, whether using Selenium or another framework, is identifying the correct web elements the tests will interact with. However, if the web elements are not located correctly, you might get NoSuchElementException in Selenium. This would cause a false negative result because we won’t get to the actual functionality check. Instead, our test will fail simply because it failed to interact with the correct element.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
As part of one of my consulting efforts, I worked with a mid-sized company that was looking to move toward a more agile manner of developing software. As with any shift in work style, there is some bewilderment and, for some, considerable anxiety. People are being challenged to leave their comfort zones and embrace a continuously changing, dynamic working environment. And, dare I say it, testing may be the most ‘disturbed’ of the software roles in agile development.
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!!