How to use headersArray method in Playwright Internal

Best JavaScript code snippet using playwright-internal

utils_request.test.js

Source:utils_request.test.js Github

copy

Full Screen

1import express from 'express';2import {3 requestAsBrowser,4 FIREFOX_MOBILE_USER_AGENT,5 FIREFOX_DESKTOP_USER_AGENT,6} from '../build/utils_request';7import { startExpressAppPromise } from './_helper';8const CONTENT = 'CONTENT';9const HOSTNAME = '127.0.0.1';10describe('Apify.utils_request', () => {11 let port;12 let server;13 beforeAll(async () => {14 const app = express();15 app.get('/406', (req, res) => {16 res.setHeader('content-type', 'text/html; charset=utf-8');17 res.status(406);18 res.send(CONTENT);19 });20 app.get('/echo', (req, res) => {21 res.send(JSON.stringify(req.headers));22 });23 app.get('/rawHeaders', (req, res) => {24 res.send(JSON.stringify(req.rawHeaders));25 });26 app.get('/invalidContentType', (req, res) => {27 res.setHeader('content-type', 'application/json');28 res.send(CONTENT);29 });30 app.get('/invalidContentHeader', (req, res) => {31 res.setHeader('Content-Type', 'non-existent-content-type');32 res.send(CONTENT);33 });34 app.get('/invalidBody', async (req, res) => {35 res.setHeader('content-encoding', 'deflate');36 res.status(500);37 res.send(Buffer.from(CONTENT, 'utf8'));38 });39 app.get('/empty', async (req, res) => {40 res.setHeader('Content-Type', 'text/html; charset=utf-8');41 res.send();42 });43 app.get('/invalidHeaderChar', (req) => {44 const headers = {45 'Invalid Header With Space': 'some\value',46 'X-Normal-Header': 'HeaderValue2',47 };48 let msg = 'HTTP/1.1 200 OK\r\n';49 Object.entries(headers).forEach(([key, value]) => {50 msg += `${key}: ${value}\r\n`;51 });52 msg += `\r\n${CONTENT}`;53 req.socket.write(msg, () => {54 req.socket.end();55 // Unfortunately calling end() will not close the socket56 // if client refuses to close it. Hence calling destroy after a short while.57 setTimeout(() => {58 req.socket.destroy();59 }, 100);60 });61 });62 server = await startExpressAppPromise(app, 0);63 port = server.address().port; //eslint-disable-line64 });65 afterAll(() => {66 server.close();67 });68 describe('Apify.requestAsBrowser', () => {69 test(70 'it uses mobile user-agent when mobile property is set to true ',71 async () => {72 const data = {73 url: `http://${HOSTNAME}:${port}/echo`,74 useMobileVersion: true,75 };76 const response = await requestAsBrowser(data);77 expect(response.statusCode).toBe(200);78 expect(JSON.parse(response.body)['user-agent']).toEqual(FIREFOX_MOBILE_USER_AGENT);79 },80 );81 test('uses desktop user-agent by default ', async () => {82 const data = {83 url: `http://${HOSTNAME}:${port}/echo`,84 };85 const response = await requestAsBrowser(data);86 expect(response.statusCode).toBe(200);87 expect(JSON.parse(response.body)['user-agent']).toEqual(FIREFOX_DESKTOP_USER_AGENT);88 });89 test('sets correct hosts', async () => {90 const host = `${HOSTNAME}:${port}`;91 const options = {92 url: `http://${host}/echo`,93 };94 const response = await requestAsBrowser(options);95 expect(response.statusCode).toBe(200);96 expect(JSON.parse(response.body).host).toEqual(host);97 });98 test('uses correct default language', async () => {99 const languageCode = 'en';100 const countryCode = 'US';101 const host = `${HOSTNAME}:${port}`;102 const options = {103 url: `http://${host}/echo`,104 };105 const response = await requestAsBrowser(options);106 expect(response.statusCode).toBe(200);107 expect(JSON.parse(response.body)['accept-language']).toEqual(`${languageCode}-${countryCode},${languageCode};q=0.5`);108 });109 test('does not throw for empty response body', async () => {110 const options = {111 url: `http://${HOSTNAME}:${port}/empty`,112 };113 let error;114 try {115 await requestAsBrowser(options);116 } catch (e) {117 error = e;118 }119 expect(error).toBeFalsy(); //eslint-disable-line120 });121 test('overrides defaults', async () => {122 const host = `${HOSTNAME}:${port}`;123 const options = {124 url: `http://${host}/echo`,125 headers: {126 'User-Agent': 'chrome',127 },128 };129 const response = await requestAsBrowser(options);130 expect(response.statusCode).toBe(200);131 expect(JSON.parse(response.body)['user-agent']).toEqual(options.headers['User-Agent']);132 });133 test('headers has same format as in firefox', async () => {134 const host = `${HOSTNAME}:${port}`;135 const options = {136 url: `http://${host}/rawHeaders`,137 };138 const response = await requestAsBrowser(options);139 const headersArray = JSON.parse(response.body);140 expect(response.statusCode).toBe(200);141 expect(headersArray[0]).toBe('Host');142 expect(headersArray[1]).toEqual(host);143 expect(headersArray[2]).toBe('User-Agent');144 expect(headersArray[3]).toEqual(FIREFOX_DESKTOP_USER_AGENT);145 expect(headersArray[4]).toBe('Accept');146 expect(headersArray[5]).toBe('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');147 expect(headersArray[6]).toBe('Accept-Language');148 expect(headersArray[7]).toBe('en-US,en;q=0.5');149 expect(headersArray[8]).toBe('Accept-Encoding');150 expect(headersArray[9]).toBe('gzip, deflate, br');151 expect(headersArray[10]).toBe('Connection');152 expect(headersArray[11]).toBe('keep-alive');153 });154 test('custom headers in lowercase override uppercase defaults', async () => {155 const host = `${HOSTNAME}:${port}`;156 const options = {157 url: `http://${host}/rawHeaders`,158 headers: {159 accept: 'foo',160 bar: 'BAZ',161 },162 };163 const response = await requestAsBrowser(options);164 const headersArray = JSON.parse(response.body);165 expect(response.statusCode).toBe(200);166 expect(headersArray[4]).toBe('Accept');167 expect(headersArray[5]).toBe('foo');168 expect(headersArray[12]).toBe('bar');169 expect(headersArray[13]).toBe('BAZ');170 });171 test('correctly handles invalid header characters', async () => {172 const url = `http://${HOSTNAME}:${port}/invalidHeaderChar`;173 const response = await requestAsBrowser({ url });174 expect(response.body).toBe(CONTENT);175 expect(response.headers).toEqual({176 'invalid header with space': 'some\value',177 'x-normal-header': 'HeaderValue2',178 });179 try {180 await requestAsBrowser({181 useInsecureHttpParser: false,182 url,183 });184 } catch (err) {185 if (process.version.startsWith('v10')) {186 expect(err.message).toMatch('Parse Error');187 } else {188 expect(err.message).toMatch('Parse Error: Invalid header value char');189 }190 }191 });192 test('does not get into redirect loops', async () => {193 const url = 'https://www.smartmania.cz'; // uses www to no-www redirect194 try {195 await requestAsBrowser({ url });196 } catch (err) {197 // If it's some other error, it's fine for the purpose of this test.198 // We're only making sure that the max redirect error is not there.199 if (err.name === 'MaxRedirectsError') throw err;200 }201 });202 });...

Full Screen

Full Screen

Bibliotheque et Archives Nationale du Quebec (Pistard).js

Source:Bibliotheque et Archives Nationale du Quebec (Pistard).js Github

copy

Full Screen

1{2 "translatorID": "1eb5eb03-26ab-4015-bd0d-65487734744a",3 "translatorType": 4,4 "label": "Bibliotheque et Archives Nationale du Quebec (Pistard)",5 "creator": "Adam Crymble",6 "target": "^https?://pistard\\.banq\\.qc\\.ca",7 "minVersion": "1.0.0b4.r5",8 "maxVersion": "",9 "priority": 100,10 "inRepository": true,11 "lastUpdated": "2008-08-06 17:00:00"12}13function detectWeb (doc, url) {14 15 if (doc.title.match("Liste détaillée des fonds")) {16 return "multiple";17 } else if (doc.title.match("Description fonds")) {18 return "book";19 }20}21//Bibliotheque et Archives National du Quebec. Code by Adam Crymble22function associateData (newItem, dataTags, field, zoteroField) {23 if (dataTags[field]) {24 newItem[zoteroField] = dataTags[field];25 }26}27function scrape(doc, url) {28 var namespace = doc.documentElement.namespaceURI;29 var nsResolver = namespace ? function(prefix) {30 if (prefix == 'x') return namespace; else return null;31 } : null;32 33 var dataTags = new Object();34 var fieldTitle;35 var tagsContent= new Array();36 var newItem = new Zotero.Item("book");37 38 var headers = doc.evaluate('//strong', doc, nsResolver, XPathResult.ANY_TYPE, null);39 var xPathCount = doc.evaluate('count (//strong)', doc, nsResolver, XPathResult.ANY_TYPE, null);40 var contents = doc.evaluate('//div[@id="Content"]/div/table', doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent;41 42 var headersArray = new Array();43 var oneHeader = '';44 if (xPathCount.numberValue > 1) {45 for (var i = 0; i < xPathCount.numberValue; i++) {46 fieldTitle = headers.iterateNext().textContent;47 headersArray.push(fieldTitle);48 }49 } else {50 oneHeader = (headers.iterateNext().textContent);51 }52 53 var contentsArray = new Array();54 var j = 0;55 56 if (oneHeader.length<1) {57 58 for (var i = headersArray.length-1; i> -1; i--) { 59 60 var fieldIndex = contents.indexOf(headersArray[i]);61 var removeHeader = headersArray[i].length;62 63 contentsArray.push(contents.substr(fieldIndex));64 contents = contents.substr(0, fieldIndex);65 fieldTitle = headersArray[i].replace(/\s+/g, '');66 67 dataTags[fieldTitle] = contentsArray[j].substr(removeHeader).replace(/^\s*|\s+$/g, '');68 j++;69 }70 } 71 Zotero.debug(dataTags);72 73 if (dataTags["Titre,Dates,Quantité"]) {74 if (dataTags["Titre,Dates,Quantité"].match(/\n/)) {75 var splitTitle = dataTags["Titre,Dates,Quantité"].split(/\n/);76 if (splitTitle[0].match(/\w/)) {77 newItem.title = splitTitle[0].replace(/^\s*|\s+$/g, '');78 }79 for (var i = 0; i < splitTitle.length; i++) {80 if (splitTitle[i].match("/ ")) {81 var author = splitTitle[i].replace(/^\s*|\s+$/g, '').substr(2);82 newItem.creators.push({lastName: author, creatorType: "creator"});83 }84 }85 }86 } else {87 newItem.title = doc.title;88 }89 90 91 var k = 0;92 if (dataTags["Termesrattachés"]) {93 94 if (dataTags["Termesrattachés"].match(/\n/)) {95 tagsContent = dataTags["Termesrattachés"].split(/\n/);96 for (var i in tagsContent) {97 if (tagsContent[i].match(/\w/)) {98 newItem.tags[k] = tagsContent[i].replace(/^\s+|\s*$/g, ''); 99 k++;100 }101 }102 } else {103 newItem.tags[0] = dataTags["Termesrattachés"];104 } 105 }106 107 associateData (newItem, dataTags, "Languedesdocuments", "language");108 associateData (newItem, dataTags, "Cote:", "callNumber");109 associateData (newItem, dataTags, "Collation", "pages");110 associateData (newItem, dataTags, "Centre:", "place");111 associateData (newItem, dataTags, "Portéeetcontenu", "abstractNote");112 113 newItem.url = doc.location.href;114 newItem.complete(); 115}116function doWeb(doc, url) {117 var namespace = doc.documentElement.namespaceURI;118 var nsResolver = namespace ? function(prefix) {119 if (prefix == 'x') return namespace; else return null;120 } : null;121 122 var articles = new Array();123 124 if (detectWeb(doc, url) == "multiple") {125 var items = new Object();126 127 var titles = doc.evaluate('//td[2]/a', doc, nsResolver, XPathResult.ANY_TYPE, null);128 129 var next_title; 130 while (next_title = titles.iterateNext()) {131 if (next_title.href.match("description_fonds")) {132 items[next_title.href] = next_title.textContent;133 }134 }135 items = Zotero.selectItems(items);136 for (var i in items) {137 articles.push(i);138 }139 } else {140 articles = [url];141 }142 Zotero.Utilities.processDocuments(articles, scrape, function() {Zotero.done();});143 Zotero.wait();...

Full Screen

Full Screen

National Archives of South Africa.js

Source:National Archives of South Africa.js Github

copy

Full Screen

1{2 "translatorID": "5b02e8d4-d8fb-4143-af3d-3576d4c1b49c",3 "label": "National Archives of South Africa",4 "creator": "Adam Crymble",5 "target": "^https?://www\\.national\\.archsrch\\.gov\\.za",6 "minVersion": "3.0",7 "maxVersion": "",8 "priority": 100,9 "inRepository": true,10 "translatorType": 4,11 "browserSupport": "gcsb",12 "lastUpdated": "2014-03-12 22:00:51"13}14function detectWeb(doc, url) {15 if (doc.title.match("Results Summary")) {16 return "multiple";17 } else if (doc.title.match("Results Detail")) {18 return "book";19 }20}21//National Archives of South Africa Translator. Code by Adam Crymble22function associateData(newItem, dataTags, field, zoteroField) {23 if (dataTags[field]) {24 newItem[zoteroField] = dataTags[field];25 }26}27function scrape(doc, url) {28 var dataTags = new Object();29 var tagsContent = new Array();30 var fieldTitle;31 var newItem = new Zotero.Item("book");32 var headers = doc.evaluate('//td[2]/pre/b', doc, null, XPathResult.ANY_TYPE, null);33 var xPathCount = doc.evaluate('count (//td[2]/pre/b)', doc, null, XPathResult.ANY_TYPE, null);34 var contents = doc.evaluate('//td[2]/pre', doc, null, XPathResult.ANY_TYPE, null).iterateNext().textContent;35 var headersArray = new Array();36 var oneHeader = '';37 if (xPathCount.numberValue > 1) {38 for (var i = 0; i < xPathCount.numberValue; i++) {39 fieldTitle = headers.iterateNext().textContent;40 headersArray.push(fieldTitle);41 }42 } else {43 oneHeader = (headers.iterateNext().textContent);44 }45 var contentsArray = new Array();46 var j = 0;47 if (oneHeader.length < 1) {48 for (var i = headersArray.length - 1; i > -1; i--) {49 var fieldIndex = contents.indexOf(headersArray[i]);50 var shorten = headersArray[i].length;51 contentsArray.push(contents.substr(fieldIndex));52 contents = contents.substr(0, fieldIndex);53 fieldTitle = headersArray[i].replace(/\s+/g, '');54 dataTags[fieldTitle] = contentsArray[j].substr(shorten).replace(/^\s*|\s+$/g, '');55 j++;56 }57 }58 associateData(newItem, dataTags, "DEPOT", "repository");59 associateData(newItem, dataTags, "REFERENCE", "callNumber");60 associateData(newItem, dataTags, "STARTING", "date");61 associateData(newItem, dataTags, "ENDING", "date");62 associateData(newItem, dataTags, "VOLUME_NO", "volume");63 associateData(newItem, dataTags, "REMARKS", "extra");64 associateData(newItem, dataTags, "SUMMARY", "abstractNote");65 associateData(newItem, dataTags, "SOURCE", "series");66 if (dataTags["DESCRIPTION"]) {67 associateData(newItem, dataTags, "DESCRIPTION", "title");68 newItem.title = ZU.capitalizeTitle(newItem.title, ignorePreference = "true")69 } else {70 newItem.title = "No Title Found";71 }72 newItem.complete();73}74function doWeb(doc, url) {75 var articles = new Array();76 if (detectWeb(doc, url) == "multiple") {77 var items = new Object();78 var titles = doc.evaluate('//td/a', doc, null, XPathResult.ANY_TYPE, null);79 var lastLink;80 var next_title;81 while (next_title = titles.iterateNext()) {82 if (!next_title.textContent.match(/^\d\d\d\d/) && !next_title.textContent.match(/\\/) && next_title.textContent.length > 3 && next_title.textContent.match(/\w/)) {83 Zotero.debug(next_title.textContent);84 items[next_title.href] = next_title.textContent.trim();85 }86 }87 Zotero.selectItems(items, function (items) {88 if (!items) {89 return true;90 }91 for (var i in items) {92 articles.push(i);93 }94 ZU.processDocuments(articles, scrape)95 }); 96 }97 else {98 scrape(doc, url);99 }100} 101/** BEGIN TEST CASES **/102var testCases = []...

Full Screen

Full Screen

csv-json.js

Source:csv-json.js Github

copy

Full Screen

1function transformForDelimiter(valuesArray, delimiter) {2 if (valuesArray instanceof Array) {3 return valuesArray.map((element) => {4 return element.split(delimiter).join(',')5 })6 }7}8function getHeaderRow(valuesArray, { headers, delimiter = ',' }, counter) {9 // operate here on valuess10 let headersArray = []11 if (valuesArray instanceof Array) {12 if (counter === 1) {13 // this chunks have headers row14 if (headers === true) {15 headersArray = valuesArray[0].split(delimiter)16 }17 else {18 headersArray = headers19 // Todo: - check length of new headers = old headers20 }21 }22 return headersArray23 }24}25function transformForHeader(valuesArray, headersArray, counter) {26 if (counter === 1) {27 // remove header row28 valuesArray.shift()29 }30 return valuesArray.reduce((arr, element) => {31 const splittedValues = element.split(',')32 const rowObj = splittedValues.reduce((obj, value, i) => {33 const keyName = headersArray[i];34 const objProp = {}35 objProp[keyName] = value36 return { ...obj, ...objProp }37 }, {})38 return [...arr, rowObj]39 }, [])40}41function transformForSkipComments(valuesArray, commentChar) {42 if (valuesArray instanceof Array) {43 return valuesArray.filter((element) => {44 const len = element.length45 return !(element[0] === commentChar || element[len - 1] === commentChar)46 })47 }48}49function transformation(values, config, counter) {50 const { delimiter = ',', skipComments = false, headersArray = [] } = config51 let valuesArray = values;52 // check for delimiter53 valuesArray = delimiter === ',' ? valuesArray : transformForDelimiter(valuesArray, delimiter)54 // check for skip Comments55 valuesArray = skipComments === false ? valuesArray : transformForSkipComments(valuesArray, '#')56 if (headersArray.length) {57 // iterated and make object 58 valuesArray = transformForHeader(valuesArray, headersArray, counter)59 }60 return valuesArray61}62// generates lines from a csv stream 63async function* csvLines(chunkStream) {64 try {65 let remainingLine = ''; // chunk may ends in the middle of a line66 for await (const chunk of chunkStream) {67 const linesFromChunk = (remainingLine + chunk).split('\n');68 remainingLine = linesFromChunk.pop();69 yield linesFromChunk;70 }71 yield remainingLine;72 } catch (error) {73 throw error74 }75}76// parser 77async function* csvToJsonParser(source, config) {78 try {79 const { headers = false } = config80 let counter = 0;81 for await (let values of csvLines(source)) {82 ++counter // to check if first record is in chunk83 // check for headers84 const headersArray = headers === false ? [] : getHeaderRow(values, config, counter)85 yield transformation(values, { ...config, headersArray }, counter)86 }87 } catch (error) {88 throw error89 }90}91module.exports = {92 csvToJsonParser...

Full Screen

Full Screen

csv-json.mjs

Source:csv-json.mjs Github

copy

Full Screen

1function transformForDelimiter(valuesArray, delimiter) {2 if (valuesArray instanceof Array) {3 return valuesArray.map((element) => {4 return element.split(delimiter).join(',')5 })6 }7}8function getHeaderRow(valuesArray, { headers, delimiter = ',' }, counter) {9 // operate here on valuess10 let headersArray = []11 if (valuesArray instanceof Array) {12 if (counter === 1) {13 // this chunks have headers row14 if (headers === true) {15 headersArray = valuesArray[0].split(delimiter)16 }17 else {18 headersArray = headers19 // Todo: - check length of new headers = old headers20 }21 }22 return headersArray23 }24}25function transformForHeader(valuesArray, headersArray, counter) {26 if (counter === 1) {27 // remove header row28 valuesArray.shift()29 }30 return valuesArray.reduce((arr, element) => {31 const splittedValues = element.split(',')32 const rowObj = splittedValues.reduce((obj, value, i) => {33 const keyName = headersArray[i];34 const objProp = {}35 objProp[keyName] = value36 return { ...obj, ...objProp }37 }, {})38 return [...arr, rowObj]39 }, [])40}41function transformForSkipComments(valuesArray, commentChar) {42 if (valuesArray instanceof Array) {43 return valuesArray.filter((element) => {44 const len = element.length45 return !(element[0] === commentChar || element[len - 1] === commentChar)46 })47 }48}49function transformation(values, config, counter) {50 const { delimiter = ',', skipComments = false, headersArray = [] } = config51 let valuesArray = values;52 // check for delimiter53 valuesArray = delimiter === ',' ? valuesArray : transformForDelimiter(valuesArray, delimiter)54 // check for skip Comments55 valuesArray = skipComments === false ? valuesArray : transformForSkipComments(valuesArray, '#')56 if (headersArray.length) {57 // iterated and make object 58 valuesArray = transformForHeader(valuesArray, headersArray, counter)59 }60 return valuesArray61}62// generates lines from a csv stream 63async function* csvLines(chunkStream) {64 try {65 let remainingLine = ''; // chunk may ends in the middle of a line66 for await (const chunk of chunkStream) {67 const linesFromChunk = (remainingLine + chunk).split('\n');68 remainingLine = linesFromChunk.pop();69 yield linesFromChunk;70 }71 yield remainingLine;72 } catch (error) {73 throw error74 }75}76// parser 77export async function* csvToJsonParser(source, config) {78 try {79 const { headers = false } = config80 let counter = 0;81 for await (let values of csvLines(source)) {82 ++counter // to check if first record is in chunk83 // check for headers84 const headersArray = headers === false ? [] : getHeaderRow(values, config, counter)85 yield transformation(values, { ...config, headersArray }, counter)86 }87 } catch (error) {88 throw error89 }...

Full Screen

Full Screen

NWayMap.js

Source:NWayMap.js Github

copy

Full Screen

1function NWayMap(input, headersArray) {2 this.isNWayMap = true;3 if (input.isNWayMap) {4 this.headersArray = input.headersArray;5 this.dataByHeaders = input.dataByHeaders;6 return this;7 }8 this.headersArray = headersArray;9 this.dataByHeaders = {};10 var objArr;11 if (this.type(input) === "object") {12 objArr = _.values(input);13 } else if (this.type(input) === "array") {14 objArr = input;15 }16 for (var i = 0; i < headersArray.length; i++) {17 var header = headersArray[i];18 this.dataByHeaders[header] = {};19 }20 for (var i = 0; i < objArr.length; i++) {21 this.put(objArr[i]);22 }23 return this;24}25NWayMap.prototype.checkHeader = function(header) {26 if (!_.contains(this.headersArray, header)) {27 throw "Error: Invalid header: " + header;28 }29};30NWayMap.prototype.put = function(value) {31 for (var i = 0; i < this.headersArray.length; i++) {32 var header = this.headersArray[i];33 if (this.get(header, value[header]) !== null) {34 throw "Error: Duplicate entry found in header: " + header + " for value " + JSON.stringify(value);35 }36 }37 for (var i = 0; i < this.headersArray.length; i++) {38 var header = this.headersArray[i];39 if (typeof value[header] !== 'undefined' && value[header] !== null) {40 this.dataByHeaders[header][value[header]] = value;41 }42 }43};44NWayMap.prototype.get = function(header, key) {45 this.checkHeader(header);46 return (typeof this.dataByHeaders[header][key] === 'undefined' || this.dataByHeaders[header][key] === null) ? null : this.dataByHeaders[header][key];47};48NWayMap.prototype.remove = function(header, key) {49 var prevValue = this.get(header, key);50 if (prevValue === null) {51 return null;52 }53 for (var i = 0; i < this.headersArray.length; i++) {54 var thisHeader = this.headersArray[i];55 delete this.dataByHeaders[thisHeader][prevValue[thisHeader]];56 }57 return prevValue;58};59NWayMap.prototype.getKeys = function(header) {60 this.checkHeader(header);61 return Object.keys(this.dataByHeaders[header]);62};63NWayMap.prototype.getValues = function(header) {64 this.checkHeader(header);65 var results = [];66 for (var i = 0; i < Object.keys(this.dataByHeaders[header]).length; i++) {67 results.push(this.dataByHeaders[header][Object.keys(this.dataByHeaders[header])[i]]);68 }69 return results;70};71NWayMap.prototype.type = function(a) {72 var t = typeof a;73 if (t === "number" && isNaN(a)) {74 return "NaN";75 } else if (t === "object") {76 return toString.call(a).replace("[object ", "").replace("]", "").toLowerCase();77 } else {78 return t.toLowerCase();79 } ...

Full Screen

Full Screen

requester.js

Source:requester.js Github

copy

Full Screen

1class Requester {2 /**3 * @desc Metodo nativo de React.js4 *5 * @doc https://reactjs.org/docs/react-component.html#constructor6 * @return { void }7 */8 constructor() {9 this.headersArray = new Headers();10 // Cabeceras11 this.headersArray.append('Accept', 'application/json');12 this.headersArray.append('Content-Type', 'application/json');13 this.dispatch = false;14 }15 /**16 * metodo para obtener el dispatch y despachar acciones17 * @return { void }18 */19 addDispatch = (dispatch) => {20 this.dispatch = dispatch;21 };22 /**23 * @desc Añade cabeceras a la request24 *25 * @param { Object } headersArray26 *27 * @return { Headers }28 */29 addHeaders(newHeaders = {}) {30 //31 let {headersArray} = this;32 // Recorremos y añadimos las cabeceras.33 Object.keys(headersArray).length > 0 &&34 headersArray.forEach((prop, value) => {35 headersArray.append(prop, value);36 });37 }38 /**39 * @desc40 *41 * @param { String } endpoint42 *43 * @return { Promise }44 */45 get(endpoint, responseType = 'json') {46 return new Promise((resolve, reject) => {47 /**48 * @desc49 */50 try {51 // Cabeceras.52 let headers = this.headersArray;53 // Armamos el requester54 let request = new Request(endpoint, {55 method: 'GET',56 headers,57 cache: 'default',58 });59 let responseHeader = null;60 //61 fetch(request)62 .then((result) => {63 responseHeader = result.headers;64 if (result.status !== 200) {65 reject(result);66 return result;67 }68 return result[responseType]();69 })70 .then((response) => {71 response.headers = responseHeader;72 resolve(response);73 })74 .catch(reject);75 } catch (e) {76 reject(e.stack);77 }78 });79 }80 /**81 * Metodo para hacer request post82 * @param { String } endpoint83 * @param { Object } data84 * @return { Promise }85 */86 async post(endpoint, data) {87 try {88 // Cabeceras.89 let headers = this.headersArray;90 // Instancia del request.91 let request = new Request(endpoint, {92 method: 'POST',93 headers,94 body: JSON.stringify(data),95 cache: 'default',96 });97 // Solicitud98 const response = await fetch(request);99 // Parseamos a json.100 const result = await response.json();101 // Asignamos la cabecera.102 result.headers = response.headers;103 result.statusCode = response.status;104 return result;105 } catch (err) {106 return {107 error: {108 message: 'No se pudo conectar con el servidor',109 body: err,110 },111 };112 }113 }114}...

Full Screen

Full Screen

cf_elf_JSHeaderRequest.js

Source:cf_elf_JSHeaderRequest.js Github

copy

Full Screen

1// 2. Extract Headers2var headerFieldsCollection = context.getVariable('request.headers.names') + '';3//Remove square brackets4headerFieldsCollection = headerFieldsCollection.substr(1, headerFieldsCollection.length - 2);5//Split string into an array6var headersArray = headerFieldsCollection.split(", ");7// get and create app attributes in case client uses basic auth8var authorization = context.getVariable("authorization");9var elfRequestHeaders = '{';10// Loop through Array and get value of header11for (var i = 0; i < headersArray.length; i++) {12 context.setVariable('headers.' + headersArray[i].toLowerCase(), context.getVariable('request.header.' + headersArray[i]));13 if(headersArray[i].toLowerCase()!=='authorization'){14 if (i!==0)15 elfRequestHeaders = elfRequestHeaders+',';16 elfRequestHeaders = elfRequestHeaders+'"request.header.' +headersArray[i]+'":"'+context.getVariable('request.header.' + headersArray[i])+'"';17 }18 // Below values assigned to have minimal impact to existing code19 context.setVariable(headersArray[i].toLowerCase(), context.getVariable('request.header.' + headersArray[i]));20}21elfRequestHeaders = elfRequestHeaders+"}";22context.setVariable("elfRequestHeaders",elfRequestHeaders);23// Store data required for logging24context.setVariable("elfLog.interactionId", context.getVariable("interactionid"));25context.setVariable("elfLog.workflowId", context.getVariable("workflowid"));26context.setVariable("elfLog.activityId", context.getVariable("activityid"));27context.setVariable("elfLog.requestVerb", context.getVariable("request.verb"));28context.setVariable("elfLog.proxyRequest", context.getVariable("request.content"));29context.setVariable("elfLog.contentType", context.getVariable("request.header.Content-Type"));30context.setVariable("elfLog.acceptType", context.getVariable("request.header.Accept"));31//context.setVariable("requestHeaderHost", context.getVariable("request.header.host"));32context.setVariable("requestHeaderHost", context.getVariable("hostName"));33context.setVariable("serviceTransactionId", context.getVariable("request.header.serviceTransactionId"));34context.setVariable("messageid", context.getVariable("request.header.messageid"));35context.setVariable("elfLog.logPayloadScope", context.getVariable("app.elfLog.logPayloadScope"));36// Variables to store all target requests and responses in a flow. These are stored in the order they are executed. Finally, these are used during ELF/Splunk logging37/*var targetRequestIndex = 0;...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { headersArray } = require('@playwright/test/lib/utils/utils');2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const headers = await page.evaluate(headersArray, page._delegate._requestHeaders);8 console.log(headers);9 await browser.close();10})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { headersArray } = require('playwright/lib/utils/utils');2const headers = headersArray({ 'Content-Type': 'application/json' });3console.log(headers);4const { headersObject } = require('playwright/lib/utils/utils');5const headers = headersObject([['Content-Type', 'application/json']]);6console.log(headers);7const { headersArray } = require('playwright/lib/utils/utils');8const { headersObject } = require('playwright/lib/utils/utils');9const headers = headersObject(headersArray({ 'Content-Type': 'application/json' }));10console.log(headers);

Full Screen

Using AI Code Generation

copy

Full Screen

1const { headersArray } = require('playwright/lib/utils/utils');2const headers = headersArray([3]);4console.log(headers);5const { chromium } = require('playwright-chromium');6const { addHeaders } = require('playwright-headers');7(async () => {8 const browser = await chromium.launch();9 const context = await browser.newContext();10 const page = await context.newPage();11 await addHeaders(context, [12 ]);13})();14### addHeaders(context, headers)15MIT © [Rafael Goulart](

Full Screen

Using AI Code Generation

copy

Full Screen

1const { headersArray } = require('playwright/lib/utils/utils');2const headers = headersArray(['Content-Type', 'application/json']);3console.log(headers);4const { headersObject } = require('playwright/lib/utils/utils');5const headers = headersObject(['Content-Type', 'application/json']);6console.log(headers);7const { headersObject } = require('playwright/lib/utils/utils');8const headers = headersObject({ 'Content-Type': 'application/json' });9console.log(headers);10const { mergeHeaders } = require('playwright/lib/utils/utils');11const headers = mergeHeaders({ 'Content-Type': 'application/json' }, { 'Content-Type': 'application/json' });12console.log(headers);13const { isSafeCloseError } = require('playwright/lib/utils/utils');14const headers = isSafeCloseError({ 'Content-Type': 'application/json' });15console.log(headers);16const { isSafeCloseError } = require('playwright/lib/utils/utils');17const headers = isSafeCloseError({ 'message': 'Target closed.' });18console.log(headers);19const { isSafeCloseError } = require('playwright/lib/utils/utils');20const headers = isSafeCloseError({ 'message': 'Target closed.' });21console.log(headers);22const { isSafeCloseError } = require('playwright/lib/utils/utils');23const headers = isSafeCloseError({ 'message': 'Target closed.' });24console.log(headers);25const { isSafeCloseError } = require('playwright/lib/utils/utils');26const headers = isSafeCloseError({ 'message': 'Target closed.' });27console.log(headers

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