Best JavaScript code snippet using playwright-internal
assertions.js
Source:assertions.js
...3const { expect } = require('chai')4module.exports = {5 errors: {6 recovery: (result) => {7 const withoutAnsiCodes = stripAnsi(result.stdout)8 expect(withoutAnsiCodes).to.include('Catching Error')9 expect(withoutAnsiCodes).to.include('Cleaning Up')10 },11 field: {12 invalidPropertyWithSuggestion: function (invalid, valid) {13 return (result) => {14 expect(result.code).to.eql(1)15 expect(result.stderr).not.to.be.empty()16 const withoutAnsiCodes = stripAnsi(result.stderr)17 expect(withoutAnsiCodes).to.include(18 `"${invalid}" is not a valid property name for a field. Did you mean "${valid}"?`19 )20 }21 },22 invalidTypeForProperty(property, invalid, valid) {23 return (result) => {24 expect(result.code).to.eql(1)25 expect(result.stderr).not.to.be.empty()26 const withoutAnsiCodes = stripAnsi(result.stderr)27 expect(withoutAnsiCodes).to.include(28 `"${invalid}" is not a valid type for the field property "${property}". Expected "${valid}"`29 )30 }31 }32 },33 contentType: {34 invalidPropertyWithSuggestion: function (invalid, valid) {35 return (result) => {36 expect(result.code).to.eql(1)37 expect(result.stderr).not.to.be.empty()38 const withoutAnsiCodes = stripAnsi(result.stderr)39 expect(withoutAnsiCodes).to.include(40 `"${invalid}" is not a valid property name for a content type. Did you mean "${valid}"?`41 )42 }43 },44 duplicateCreate: function (line, id) {45 return (result) => {46 expect(result.code).to.eql(1)47 expect(result.stderr).not.to.be.empty()48 const withoutAnsiCodes = stripAnsi(result.stderr)49 expect(withoutAnsiCodes).to.include(50 `Line ${line}: Content type with id "${id}" cannot be created more than once.`51 )52 }53 },54 invalidProperty: function (line, invalid) {55 return (result) => {56 expect(result.code).to.eql(1)57 expect(result.stderr).not.to.be.empty()58 const withoutAnsiCodes = stripAnsi(result.stderr)59 expect(withoutAnsiCodes).to.include(60 `Line ${line}: You cannot set a property on content type "${invalid}" because it does not exist.`61 )62 }63 },64 alreadyExist: function (line, id) {65 return (result) => {66 expect(result.code).to.eql(1)67 expect(result.stderr).not.to.be.empty()68 const withoutAnsiCodes = stripAnsi(result.stderr)69 expect(withoutAnsiCodes).to.include(70 `Line ${line}: Content type with id "${id}" already exists.`71 )72 }73 }74 },75 entriesTransform: function (id, message) {76 return (result) => {77 expect(result.code).to.eql(1)78 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)79 expect(withoutAnsiCodes).to.include(id)80 expect(withoutAnsiCodes).to.include(message)81 expect(withoutAnsiCodes).to.include('Please check the errors log for details:')82 }83 }84 },85 plans: {86 contentType: {87 create: function (id, params) {88 return (result) => {89 expect(result.stdout).not.to.be.empty()90 const withoutAnsiCodes = stripAnsi(result.stdout)91 expect(withoutAnsiCodes).to.include(`Create Content Type ${id}`)92 if (params != null) {93 Object.keys(params).forEach((param) => {94 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)95 })96 }97 }98 },99 update: function (id, params) {100 return (result) => {101 expect(result.stdout).not.to.be.empty()102 const withoutAnsiCodes = stripAnsi(result.stdout)103 expect(withoutAnsiCodes).to.include(`Update Content Type ${id}`)104 if (params != null) {105 return Object.keys(params).forEach((param) => {106 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)107 })108 }109 }110 },111 delete: function (id) {112 return (result) => {113 expect(result.stdout).not.to.be.empty()114 const withoutAnsiCodes = stripAnsi(result.stdout)115 expect(withoutAnsiCodes).to.include(`Delete Content Type ${id}`)116 }117 }118 },119 editorInterface: {120 change: function (contentTypeId, fieldId, widgetId) {121 return (result) => {122 expect(result.stdout).not.to.be.empty()123 const withoutAnsiCodes = stripAnsi(result.stdout)124 expect(withoutAnsiCodes).to.include(125 `Update field controls for Content Type ${contentTypeId}`126 )127 expect(withoutAnsiCodes).to.include(`widgetId: "${widgetId}"`)128 }129 }130 },131 editorLayout: {132 create: function (ctId) {133 return (result) => {134 expect(result.stdout).not.to.be.empty()135 const withoutAnsiCodes = stripAnsi(result.stdout)136 expect(withoutAnsiCodes).to.include(`Create editor layout for content type ${ctId}`)137 }138 },139 changeFieldGroupId: function (oldFieldGroupId, newFieldGroupId) {140 return (result) => {141 expect(result.stdout).not.to.be.empty()142 const withoutAnsiCodes = stripAnsi(result.stdout)143 expect(withoutAnsiCodes).to.include(144 `Change field group id from ${oldFieldGroupId} to ${newFieldGroupId}`145 )146 }147 },148 createFieldGroup: function (fieldGroupId) {149 return (result) => {150 expect(result.stdout).not.to.be.empty()151 const withoutAnsiCodes = stripAnsi(result.stdout)152 expect(withoutAnsiCodes).to.include(`Create field group ${fieldGroupId}`)153 }154 },155 createFieldGroupInParent: function (fieldGroupId, parentFieldGroupId) {156 return (result) => {157 expect(result.stdout).not.to.be.empty()158 const withoutAnsiCodes = stripAnsi(result.stdout)159 expect(withoutAnsiCodes).to.include(160 `Create field group ${fieldGroupId} in field group ${parentFieldGroupId}`161 )162 }163 },164 delete: function (ctId) {165 return (result) => {166 expect(result.stdout).not.to.be.empty()167 const withoutAnsiCodes = stripAnsi(result.stdout)168 expect(withoutAnsiCodes).to.include(`Delete editor layout for content type ${ctId}`)169 }170 },171 deleteFieldGroup: function (fieldGroupId) {172 return (result) => {173 expect(result.stdout).not.to.be.empty()174 const withoutAnsiCodes = stripAnsi(result.stdout)175 expect(withoutAnsiCodes).to.include(`Delete field group ${fieldGroupId}`)176 }177 },178 moveFieldToTheFirstPositionInFieldGroup: function (fieldId, pivot) {179 return (result) => {180 expect(result.stdout).not.to.be.empty()181 const withoutAnsiCodes = stripAnsi(result.stdout)182 expect(withoutAnsiCodes).to.include(183 `Move field ${fieldId} to the first position ${184 pivot ? `of group ${pivot}` : 'of its group'185 }`186 )187 }188 },189 moveFieldToTheLastPositionInFieldGroup: function (fieldId, pivot) {190 return (result) => {191 expect(result.stdout).not.to.be.empty()192 const withoutAnsiCodes = stripAnsi(result.stdout)193 expect(withoutAnsiCodes).to.include(194 `Move field ${fieldId} to the last position ${195 pivot ? `of group ${pivot}` : 'of its group'196 }`197 )198 }199 },200 moveFieldAfterField: function (fieldId, pivot) {201 return (result) => {202 expect(result.stdout).not.to.be.empty()203 const withoutAnsiCodes = stripAnsi(result.stdout)204 expect(withoutAnsiCodes).to.include(`Move field ${fieldId} after field ${pivot}`)205 }206 },207 moveFieldBeforeField: function (fieldId, pivot) {208 return (result) => {209 expect(result.stdout).not.to.be.empty()210 const withoutAnsiCodes = stripAnsi(result.stdout)211 expect(withoutAnsiCodes).to.include(`Move field ${fieldId} before field ${pivot}`)212 }213 },214 moveFieldAfterFieldGroup: function (fieldId, pivot) {215 return (result) => {216 expect(result.stdout).not.to.be.empty()217 const withoutAnsiCodes = stripAnsi(result.stdout)218 expect(withoutAnsiCodes).to.include(`Move field ${fieldId} after field group ${pivot}`)219 }220 },221 moveFieldBeforeFieldGroup: function (fieldId, pivot) {222 return (result) => {223 expect(result.stdout).not.to.be.empty()224 const withoutAnsiCodes = stripAnsi(result.stdout)225 expect(withoutAnsiCodes).to.include(`Move field ${fieldId} before field group ${pivot}`)226 }227 },228 update: function (ctId) {229 return (result) => {230 expect(result.stdout).not.to.be.empty()231 const withoutAnsiCodes = stripAnsi(result.stdout)232 expect(withoutAnsiCodes).to.include(`Update editor layout for content type ${ctId}`)233 }234 },235 updateFieldGroup: function (fieldGroupId, params) {236 return (result) => {237 expect(result.stdout).not.to.be.empty()238 const withoutAnsiCodes = stripAnsi(result.stdout)239 expect(withoutAnsiCodes).to.include(`Update field group ${fieldGroupId}`)240 if (params != null) {241 return Object.keys(params).forEach((param) => {242 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)243 })244 }245 }246 },247 updateGroupControls: function (fieldGroupId, widgetNamespace, widgetId, settings) {248 return (result) => {249 expect(result.stdout).not.to.be.empty()250 const withoutAnsiCodes = stripAnsi(result.stdout)251 expect(withoutAnsiCodes).to.include(252 `Update group controls for field group ${fieldGroupId}`253 )254 expect(withoutAnsiCodes).to.include(`- widgetId: ${JSON.stringify(widgetId)}`)255 expect(withoutAnsiCodes).to.include(256 `- widgetNamespace: ${JSON.stringify(widgetNamespace)}`257 )258 if (settings) {259 expect(withoutAnsiCodes).to.include(`- settings: ${JSON.stringify(settings)}`)260 }261 }262 }263 },264 field: {265 create: function (id, params) {266 return (result) => {267 expect(result.stdout).not.to.be.empty()268 const withoutAnsiCodes = stripAnsi(result.stdout)269 expect(withoutAnsiCodes).to.include(`Create field ${id}`)270 if (params != null) {271 Object.keys(params).forEach((param) => {272 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)273 })274 }275 }276 },277 update: function (id, params) {278 return (result) => {279 expect(result.stdout).not.to.be.empty()280 const withoutAnsiCodes = stripAnsi(result.stdout)281 expect(withoutAnsiCodes).to.include(`Update field ${id}`)282 if (params != null) {283 return Object.keys(params).forEach((param) => {284 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)285 })286 }287 }288 },289 move: function (position, first, second) {290 return (result) => {291 expect(result.stdout).not.to.be.empty()292 const withoutAnsiCodes = stripAnsi(result.stdout)293 if (position === 'top') {294 expect(withoutAnsiCodes).to.include(`Move field ${first} to the first position`)295 } else if (position === 'bottom') {296 expect(withoutAnsiCodes).to.include(`Move field ${first} to the last position`)297 } else {298 expect(withoutAnsiCodes).to.include(`Move field ${first} ${position} field ${second}`)299 }300 }301 },302 rename: function (id, newId) {303 return (result) => {304 expect(result.stdout).not.to.be.empty()305 const withoutAnsiCodes = stripAnsi(result.stdout)306 expect(withoutAnsiCodes).to.include(`Rename field ${id} to ${newId}`)307 }308 },309 delete: function (id) {310 return (result) => {311 expect(result.stdout).not.to.be.empty()312 const withoutAnsiCodes = stripAnsi(result.stdout)313 expect(withoutAnsiCodes).to.include(`Delete field ${id}`)314 }315 }316 },317 actions: {318 abort: function () {319 return (result) => {320 expect(result.stdout).not.to.be.empty()321 const withoutAnsiCodes = stripAnsi(result.stdout)322 const errorWithoutAnsiCodes = stripAnsi(result.stderr)323 expect(withoutAnsiCodes).to.include(`The following migration has been planned`)324 expect(withoutAnsiCodes).to.include(`? Do you want to apply the migration No`)325 expect(errorWithoutAnsiCodes).to.include(`Migration aborted`)326 }327 },328 apply: function () {329 return (result) => {330 expect(result.stdout).not.to.be.empty()331 const withoutAnsiCodes = stripAnsi(result.stdout)332 expect(withoutAnsiCodes).to.include(`The following migration has been planned`)333 expect(withoutAnsiCodes).to.include(`? Do you want to apply the migration Yes`)334 expect(withoutAnsiCodes).to.include(`Migration successful`)335 }336 }337 },338 entriesTransform: function (id) {339 return (result) => {340 const withoutAnsiCodes = stripAnsi(result.stdout)341 expect(withoutAnsiCodes).to.include(`Transform entries for ${id}`)342 }343 },344 entriesDerive: function (id) {345 return (result) => {346 expect(result.stdout).not.to.be.empty()347 const withoutAnsiCodes = stripAnsi(result.stdout)348 expect(withoutAnsiCodes).to.include(`Derive entries from ${id}`)349 }350 },351 entriesSetTags: function (id) {352 return (result) => {353 expect(result.stdout).not.to.be.empty()354 const withoutAnsiCodes = stripAnsi(result.stdout)355 expect(withoutAnsiCodes).to.include(`Updating tags on entries for ${id}`)356 }357 },358 tag: {359 create: function (id, params) {360 return (result) => {361 expect(result.stdout).not.to.be.empty()362 const withoutAnsiCodes = stripAnsi(result.stdout)363 expect(withoutAnsiCodes).to.include(`Create Tag ${id}`)364 if (params != null) {365 Object.keys(params).forEach((param) => {366 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)367 })368 }369 }370 },371 update: function (id, params) {372 return (result) => {373 expect(result.stdout).not.to.be.empty()374 const withoutAnsiCodes = stripAnsi(result.stdout)375 expect(withoutAnsiCodes).to.include(`Update Tag ${id}`)376 if (params != null) {377 return Object.keys(params).forEach((param) => {378 expect(withoutAnsiCodes).to.include(`- ${param}: ${JSON.stringify(params[param])}`)379 })380 }381 }382 },383 delete: function (id) {384 return (result) => {385 expect(result.stdout).not.to.be.empty()386 const withoutAnsiCodes = stripAnsi(result.stdout)387 expect(withoutAnsiCodes).to.include(`Delete Tag ${id}`)388 }389 }390 }391 },392 help: {393 message: function () {394 return (result) => {395 let stdtype = result.stdout396 if (result.code === 1) {397 stdtype = result.stderr398 }399 expect(stdtype).not.to.be.empty()400 const withoutAnsiCodes = stripAnsi(stdtype)401 expect(withoutAnsiCodes).to.include(402 `Usage: contentful-migration [args] <path-to-script-file>`403 )404 }405 },406 wrongArgsWithSuggestion: function () {407 return (result) => {408 expect(result.code).to.eql(1)409 expect(result.stderr).not.to.be.empty()410 const withoutAnsiCodes = stripAnsi(result.stderr)411 expect(withoutAnsiCodes).to.include(`Missing required argument: space-id`)412 expect(withoutAnsiCodes).to.include(`Please provide a space ID`)413 }414 },415 noArgsWithSuggestion: function () {416 return (result) => {417 expect(result.code).to.eql(1)418 expect(result.stderr).not.to.be.empty()419 const withoutAnsiCodes = stripAnsi(result.stderr)420 expect(withoutAnsiCodes).to.include(421 `Please provide the file containing the migration script.`422 )423 }424 },425 nonExistingMigrationScript: function (filePath) {426 return (result) => {427 expect(result.code).to.eql(1)428 expect(result.stderr).not.to.be.empty()429 const withoutAnsiCodes = stripAnsi(result.stderr)430 expect(withoutAnsiCodes).to.include(`Cannot find file ${filePath}.`)431 }432 }433 },434 confirmation: {435 noConfirmationMessage: function () {436 return (result) => {437 const stdtype = result.stdout438 expect(result.code).to.eql(0)439 expect(stdtype).not.to.be.empty()440 const withoutAnsiCodes = stripAnsi(stdtype)441 expect(withoutAnsiCodes).to.not.include('Do you want to apply the migration')442 expect(withoutAnsiCodes).to.include('Migration successful')443 }444 }445 },446 logs: {447 helpMessage: function () {448 return (result) => {449 let stdtype = result.stdout450 if (result.code === 1) {451 stdtype = result.stderr452 }453 expect(stdtype).not.to.be.empty()454 const withoutAnsiCodes = stripAnsi(stdtype)455 expect(withoutAnsiCodes).to.include(`--quiet, -q`)456 }457 }458 },459 payload: {460 notDefined: function (method) {461 return (result) => {462 expect(result.code).to.eql(1)463 expect(result.stdout).not.to.be.empty()464 const withoutAnsiCodes = stripAnsi(result.stdout)465 expect(withoutAnsiCodes).to.include(`${method} is not defined`)466 }467 },468 syntaxError: function (script, line, message) {469 return (result) => {470 expect(result.code).to.eql(0)471 expect(result.stdout).not.to.be.empty()472 const withoutAnsiCodes = stripAnsi(result.stdout)473 expect(withoutAnsiCodes).to.include(474 `script could not be parsed, as it seems to contain syntax errors.`475 )476 expect(withoutAnsiCodes).to.include(`${script}:${line}`)477 expect(withoutAnsiCodes).to.include(`SyntaxError: ${message}`)478 }479 }480 },481 validations: {482 contentType: {483 requiredProperty: function (path) {484 return (result) => {485 expect(result.code).to.eql(1)486 expect(result.stderr).not.to.be.empty()487 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)488 expect(withoutAnsiCodes).to.include(489 `Error: The property "${path}" is required on a content type.`490 )491 }492 },493 nonExistentDisplayField: function (displayField, ctId) {494 return (result) => {495 expect(result.code).to.eql(1)496 expect(result.stdout).not.to.be.empty()497 expect(result.stderr).not.to.be.empty()498 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)499 expect(withoutAnsiCodes).to.include(500 `Error: Cannot set "${displayField}" as displayField on content type "${ctId}" because it does not exist`501 )502 }503 },504 deleteDisplayField: function (displayField, ctId) {505 return (result) => {506 expect(result.code).to.eql(1)507 expect(result.stdout).not.to.be.empty()508 expect(result.stderr).not.to.be.empty()509 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)510 expect(withoutAnsiCodes).to.include(511 `Error: Cannot delete field "${displayField}" on content type "${ctId}" because it is set as the display field`512 )513 }514 }515 },516 field: {517 requiredProperty: function (prop, id) {518 return (result) => {519 expect(result.code).to.eql(1)520 expect(result.stdout).not.to.be.empty()521 expect(result.stderr).not.to.be.empty()522 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)523 expect(withoutAnsiCodes).to.include(524 `Error: The property "${prop}" is required on the field "${id}".`525 )526 }527 },528 propertyOneOf: function (prop, id) {529 return (result) => {530 const oneOf =531 '["Symbol", "Text", "Integer", "Number", "Date", "Boolean", "Object", "Link", "Array", "Location", "RichText"]'532 expect(result.code).to.eql(1)533 expect(result.stdout).not.to.be.empty()534 expect(result.stderr).not.to.be.empty()535 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)536 expect(withoutAnsiCodes).to.include(537 `Error: The property "${prop}" on the field "${id}" must be one of ${oneOf}.`538 )539 }540 },541 noDeleteWithoutOmit: function (fieldId, ctId) {542 return (result) => {543 expect(result.code).to.eql(1)544 expect(result.stdout).not.to.be.empty()545 expect(result.stderr).not.to.be.empty()546 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)547 expect(withoutAnsiCodes).to.include(548 `Error: Cannot set "deleted" to "true" on field "${fieldId}" on content type "${ctId}". It needs to be omitted first. Consider using "deleteField".`549 )550 }551 },552 noTypeChange: function (fieldId, ctId, parentFieldType, fieldType) {553 return (result) => {554 expect(result.code).to.eql(1)555 expect(result.stdout).not.to.be.empty()556 expect(result.stderr).not.to.be.empty()557 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)558 expect(withoutAnsiCodes).to.include(559 `Error: Cannot change the type of field "${fieldId}" on content type "${ctId}" from "${parentFieldType}" to "${fieldType}". Field types cannot be changed.`560 )561 }562 },563 idMustMatchSchema: function (newId, fieldId) {564 return (result) => {565 expect(result.code).to.eql(1)566 expect(result.stdout).not.to.be.empty()567 expect(result.stderr).not.to.be.empty()568 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)569 expect(withoutAnsiCodes).to.include(570 `Error: The new ID "${newId}" for the field "${fieldId}" does not match the requirements. IDs must be between 1 and 64 characters long, start with a letter, and contain only alphanumeric characters as well as underscores.`571 )572 }573 }574 },575 validations: {576 duplicatedValidation: function (duplicatedValue) {577 return (result) => {578 expect(result.code).to.eql(1)579 expect(result.stdout).not.to.be.empty()580 expect(result.stderr).not.to.be.empty()581 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)582 expect(withoutAnsiCodes).to.include(583 `Error: A field can't have duplicates in the validations array. Duplicate: "${JSON.stringify(584 duplicatedValue585 )}"`586 )587 }588 },589 invalidValidationProperty: function (propName) {590 return (result) => {591 expect(result.code).to.eql(1)592 expect(result.stdout).not.to.be.empty()593 expect(result.stderr).not.to.be.empty()594 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)595 expect(withoutAnsiCodes).to.include(596 `Error: A field can't have "${propName}" as a validation.`597 )598 }599 },600 invalidValidationParameter: function (propName, expectedType, actualType) {601 return (result) => {602 expect(result.code).to.eql(1)603 expect(result.stdout).not.to.be.empty()604 expect(result.stderr).not.to.be.empty()605 const withoutAnsiCodes = stripAnsi(`${result.stdout} ${result.stderr}`)606 expect(withoutAnsiCodes).to.include(607 `Error: "${propName}" validation expected to be "${expectedType}", but got "${actualType}"`608 )609 }610 }611 }612 }...
ignite-model.es6
Source:ignite-model.es6
...74 describe('.prototype._getItemTable()', () => {75 it('should transform the item properties if the \'item_transform\' option is set', () => {76 const itemIgniteModelTransform = new IgniteModel(itemDefinition, { item_transform: true });77 const [dataTable, summaryTable] = itemIgniteModelTransform._getItemTables($);78 expect(stripAnsi(dataTable)).to.be(itemTableTransformedString);79 expect(stripAnsi(summaryTable)).to.be('');80 });81 it('should not transform the item properties if the \'item_transform\' option is not set', () => {82 const [dataTable, summaryTable] = itemIgniteModel._getItemTables($);83 expect(stripAnsi(dataTable)).to.be(itemTableString);84 expect(stripAnsi(summaryTable)).to.be('');85 });86 });87 describe('.prototype._getCollectionTable()', () => {88 it('should generate the string for a collection table if the \'item_transform\' option is set', () => {89 const collectionIgniteModelTransformed = new IgniteModel(collectionDefinition, { item_transform: true });90 const [dataTable, summaryTable] = collectionIgniteModelTransformed._getCollectionTables($);91 expect(stripAnsi(dataTable)).to.be(collectionTableString);92 expect(stripAnsi(summaryTable)).to.be(summaryTableString);93 });94 it('should generate the string for a iteration table if the \'item_transform\' option is false', () => {95 const collectionIgniteModelUntransformed = new IgniteModel(collectionDefinition, { item_transform: false });96 const [dataTable, summaryTable] = collectionIgniteModelUntransformed._getCollectionTables($);97 expect(stripAnsi(dataTable)).to.be(iterationTableString);98 expect(stripAnsi(summaryTable)).to.be(summaryTableString);99 });100 it('should generate the string for a iteration table if the \'item_transform\' option is not set', () => {101 const [dataTable, summaryTable] = collectionIgniteModel._getCollectionTables($);102 expect(stripAnsi(dataTable)).to.be(iterationTableString);103 expect(stripAnsi(summaryTable)).to.be(summaryTableString);104 });105 it('should not show a collection or iteration table if the \'table\' option is false', () => {106 const collectionIgniteModelTable = new IgniteModel(collectionDefinition, { table: false });107 const [dataTable, summaryTable] = collectionIgniteModelTable._getCollectionTables($);108 expect(stripAnsi(dataTable)).to.be('');109 expect(stripAnsi(summaryTable)).to.be(summaryTableString);110 });111 });112 describe('.prototype._buildItemTable()', () => {113 it('should generate the string for an item table', () => {114 const item = itemIgniteModel._parseItem($);115 expect(stripAnsi(itemIgniteModel._buildItemTable(item))).to.be(itemTableString)116 });117 });118 describe('.prototype._buildCollectionTable()', () => {119 it('should generate the string for an collection table', () => {120 const collection = collectionIgniteModel._parseCollection($);121 expect(stripAnsi(collectionIgniteModel._buildCollectionTable(collection))).to.be(collectionTableString)122 });123 });124 describe('.prototype._buildIterationTable()', () => {125 it('should generate the string for an iteration table', () => {126 const iteration = iterationIgniteModel._parseIteration($);127 expect(stripAnsi(iterationIgniteModel._buildIterationTable(iteration))).to.be(iterationTableString)128 });129 });130 describe('.prototype._buildSummaryTable()', () => {131 it('should generate the string for an iteration table', () => {132 const collection = collectionIgniteModel._parseCollection($);133 const iteration = iterationIgniteModel._parseIteration($);134 expect(stripAnsi(collectionIgniteModel._buildSummaryTable(collection.length, iteration.length))).to.be(summaryTableString)135 });136 });...
test.js
Source:test.js
...34test('output', t => {35 disableHyperlinks();36 const output = eslintFormatterPretty(defaultFixture);37 console.log(output);38 t.regex(stripAnsi(output), /index\.js:18:2\n/);39 t.regex(stripAnsi(output), /â {3}1:1 {2}AVA should be imported as test. {6}ava\/use-test/);40});41test('file heading links to the first error line', t => {42 disableHyperlinks();43 const output = eslintFormatterPretty(defaultFixture);44 console.log(output);45 t.regex(stripAnsi(output), /index\.js:18:2\n/);46});47test('file heading links to the first warning line if no errors in the file', t => {48 disableHyperlinks();49 const output = eslintFormatterPretty(defaultFixture);50 console.log(output);51 t.regex(stripAnsi(output), /test\.js:1:1\n/);52});53test('no line numbers', t => {54 disableHyperlinks();55 const output = eslintFormatterPretty(noLineNumbers);56 console.log(output);57 t.regex(stripAnsi(output), /index\.js\n/);58 t.regex(stripAnsi(output), /â {2}AVA should be imported as test. {6}ava\/use-test/);59});60test('show line numbers', t => {61 disableHyperlinks();62 const output = eslintFormatterPretty(lineNumbers);63 console.log(output);64 t.regex(stripAnsi(output), /â {3}0:0 {2}Unexpected todo comment. {13}no-warning-comments/);65 t.regex(stripAnsi(output), /â {3}1:1 {2}AVA should be imported as test. {6}ava\/use-test/);66});67test('link rules to documentation when terminal supports links', t => {68 enableHyperlinks();69 const output = eslintFormatterPretty(defaultFixture);70 console.log(output);71 t.true(output.includes(ansiEscapes.link(chalk.dim('no-warning-comments'), 'https://eslint.org/docs/rules/no-warning-comments')));72});73test('sort by severity, then line number, then column number', t => {74 disableHyperlinks();75 const output = eslintFormatterPretty(sortOrder);76 const sanitized = stripAnsi(output);77 const indexes = [78 sanitized.indexOf('â 1:1'),79 sanitized.indexOf('â 10:2'),80 sanitized.indexOf('â 3:1'),81 sanitized.indexOf('â 30:1'),82 sanitized.indexOf('â 40:5'),83 sanitized.indexOf('â 40:8')84 ];85 console.log(output);86 t.deepEqual(indexes, indexes.slice().sort((a, b) => a - b));87});88test('display warning total before error total', t => {89 disableHyperlinks();90 const output = eslintFormatterPretty(sortOrder);91 const sanitized = stripAnsi(output);92 const indexes = [93 sanitized.indexOf('2 warnings'),94 sanitized.indexOf('4 errors')95 ];96 console.log(output);97 t.deepEqual(indexes, indexes.slice().sort((a, b) => a - b));98});99test('files will be sorted with least errors at the bottom, but zero errors at the top', t => {100 disableHyperlinks();101 const reports = [102 fakeReport(1, 0),103 fakeReport(3, 0),104 fakeReport(0, 1),105 fakeReport(2, 2)106 ];107 const output = eslintFormatterPretty(reports);108 const sanitized = stripAnsi(output);109 const indexes = [110 sanitized.indexOf('0-error.1-warning.js'),111 sanitized.indexOf('3-error.0-warning.js'),112 sanitized.indexOf('2-error.2-warning.js'),113 sanitized.indexOf('1-error.0-warning.js')114 ];115 console.log(output);116 t.is(indexes.length, reports.length);117 t.deepEqual(indexes, indexes.slice().sort((a, b) => a - b));118});119test('files with similar errorCounts will sort according to warningCounts', t => {120 disableHyperlinks();121 const reports = [122 fakeReport(1, 0),123 fakeReport(1, 2),124 fakeReport(1, 1),125 fakeReport(0, 1),126 fakeReport(0, 2),127 fakeReport(0, 3),128 fakeReport(2, 2),129 fakeReport(2, 1)130 ];131 const output = eslintFormatterPretty(reports);132 const sanitized = stripAnsi(output);133 const indexes = [134 sanitized.indexOf('0-error.3-warning.js'),135 sanitized.indexOf('0-error.2-warning.js'),136 sanitized.indexOf('0-error.1-warning.js'),137 sanitized.indexOf('2-error.2-warning.js'),138 sanitized.indexOf('2-error.1-warning.js'),139 sanitized.indexOf('1-error.2-warning.js'),140 sanitized.indexOf('1-error.1-warning.js'),141 sanitized.indexOf('1-error.0-warning.js')142 ];143 console.log(output);144 t.is(indexes.length, reports.length);145 t.deepEqual(indexes, indexes.slice().sort((a, b) => a - b));146});...
notify.js
Source:notify.js
...39});40test('use pretty boxen message by default', t => {41 const notifier = new Control();42 notifier.notify({defer: false, isGlobal: true});43 t.is(stripAnsi(errorLogs), `44 âââââââââââââââââââââââââââââââââââââââââââââââââââââ®45 â â46 â Update available 0.0.2 â 1.0.0 â47 â Run npm i -g update-notifier-tester to update â48 â â49 â°ââââââââââââââââââââââââââââââââââââââââââââââââââââ¯50`);51});52test('supports custom message', t => {53 const notifier = new Control();54 notifier.notify({55 defer: false,56 isGlobal: true,57 message: 'custom message'58 });59 t.true(stripAnsi(errorLogs).includes('custom message'));60});61test('supports message with placeholders', t => {62 const notifier = new Control();63 notifier.notify({64 defer: false,65 isGlobal: true,66 message: [67 'Package Name: {packageName}',68 'Current Version: {currentVersion}',69 'Latest Version: {latestVersion}',70 'Update Command: {updateCommand}'71 ].join('\n')72 });73 t.is(stripAnsi(errorLogs), `74 âââââââââââââââââââââââââââââââââââââââââââââââââââââââ®75 â â76 â Package Name: update-notifier-tester â77 â Current Version: 0.0.2 â78 â Latest Version: 1.0.0 â79 â Update Command: npm i -g update-notifier-tester â80 â â81 â°ââââââââââââââââââââââââââââââââââââââââââââââââââââââ¯82`);83});84test('exclude -g argument when `isGlobal` option is `false`', t => {85 const notifier = new Control();86 notifier.notify({defer: false, isGlobal: false});87 t.not(stripAnsi(errorLogs).indexOf('Run npm i update-notifier-tester to update'), -1);88});89test('shouldNotifyInNpmScript should default to false', t => {90 const notifier = new Control();91 notifier.notify({defer: false});92 t.not(stripAnsi(errorLogs).indexOf('Update available'), -1);93});94test('suppress output when running as npm script', t => {95 setupTest(true);96 const notifier = new Control();97 notifier.notify({defer: false});98 t.false(stripAnsi(errorLogs).includes('Update available'));99});100test('should output if running as npm script and shouldNotifyInNpmScript option set', t => {101 setupTest(true);102 const notifier = new Control(true);103 notifier.notify({defer: false});104 t.true(stripAnsi(errorLogs).includes('Update available'));105});106test('should not output if current version is the latest', t => {107 setupTest(true);108 const notifier = new Control(true);109 notifier.update.current = '1.0.0';110 notifier.notify({defer: false});111 t.false(stripAnsi(errorLogs).includes('Update available'));112});113test('should not output if current version is more recent than the reported latest', t => {114 setupTest(true);115 const notifier = new Control(true);116 notifier.update.current = '1.0.1';117 notifier.notify({defer: false});118 t.false(stripAnsi(errorLogs).includes('Update available'));...
test-generator-output.js
Source:test-generator-output.js
...19 });20 it('can provide info', function () {21 var out = require('../index').generator_output(this.logmock);22 out.info('HELLO');23 assert.strictEqual(stripAnsi(this.logmock.get()), 'INFO: HELLO');24 });25 it('can warn or issues', function () {26 var out = require('../index').generator_output(this.logmock);27 out.warn('WORLD');28 assert.strictEqual(stripAnsi(this.logmock.get()), 'WARN: WORLD');29 });30 it('can error out', function () {31 var out = require('../index').generator_output(this.logmock);32 out.error('OBLITERATION!');33 assert.strictEqual(stripAnsi(this.logmock.get()), 'ERROR: OBLITERATION!');34 });35 it('does not display anything when docs is called without arguments', function () {36 var out = require('../index').generator_output(this.logmock);37 out.docs();38 assert.strictEqual(this.logmock.get(), '');39 });40 it('can display documentation without a link', function () {41 var out = require('../index').generator_output(this.logmock);42 out.docs('useful info');43 assert.strictEqual(stripAnsi(this.logmock.get()), 'useful info');44 });45 it('can display a link without documentation', function () {46 var out = require('../index').generator_output(this.logmock);47 out.docs(undefined, 'link');48 assert.strictEqual(stripAnsi(this.logmock.get()), 'See: link');49 });50 it('can display documentation with a link', function () {51 var out = require('../index').generator_output(this.logmock);52 out.docs('useful info', 'link');53 assert.strictEqual(stripAnsi(this.logmock.get()), 'useful info\nSee: link');54 });55 it('can display multi-line documentation', function () {56 var out = require('../index').generator_output(this.logmock);57 out.docs(['useful', 'info']);58 assert.strictEqual(stripAnsi(this.logmock.get()), 'useful\n\ninfo');59 });60 it('can provide a definition', function () {61 var out = require('../index').generator_output(this.logmock);62 out.definition('example', 'this is an example.');63 assert.strictEqual(stripAnsi(this.logmock.get()), 'example: this is an example.');64 });65 it('can produce a color banner', function () {66 var out = require('../index').generator_output(this.logmock);67 assert.strictEqual(stripAnsi(out.bannerText()), out.rawBannerText());68 });69 it('can produce a fancy banner', function () {70 var out = require('../index').generator_output(this.logmock);71 out.banner(' ', 120);72 assert.strictEqual(stripAnsi(this.logmock.get()), out.rawBannerText());73 });74 it('can produce a fancy logo', function () {75 var out = require('../index').generator_output(this.logmock);76 out.banner(' ', 100);77 assert.strictEqual(stripAnsi(this.logmock.get()), out.rawLogoText());78 });79});...
format-results.spec.js
Source:format-results.spec.js
...16 ['rule4', 2],17 ['rule5', 2],18 ]),19 ];20 expect(stripAnsi(format(results, {}))).toMatchSnapshot();21});22test('defaults to sorting summary by rule id / ascending', () => {23 const results = [24 mockResult([25 ['B', 1],26 ['C', 2],27 ['A', 2],28 ]),29 mockResult([30 ['A', 1],31 ['C', 1],32 ]),33 ];34 expect(stripAnsi(format(results, {}))).toMatchSnapshot();35});36test('can sort summary by rule id', () => {37 const results = [38 mockResult([39 ['rule2', 1],40 ['rule3', 2],41 ]),42 mockResult([43 ['rule1', 1],44 ['rule2', 1],45 ]),46 ];47 expect(stripAnsi(format(results, { SORT_BY: 'rule' }))).toMatchSnapshot();48 expect(49 stripAnsi(format(results, { SORT_BY: 'rule', DESC: 'true' }))50 ).toMatchSnapshot();51});52test('can sort summary by num of errors', () => {53 const results = [54 mockResult([55 ['rule2', 2],56 ['rule3', 2],57 ]),58 mockResult([59 ['rule1', 1],60 ['rule2', 2],61 ]),62 ];63 expect(stripAnsi(format(results, { SORT_BY: 'errors' }))).toMatchSnapshot();64 expect(65 stripAnsi(format(results, { SORT_BY: 'errors', DESC: 'true' }))66 ).toMatchSnapshot();67});68test('can sort summary by num of warnings', () => {69 const results = [70 mockResult([71 ['rule2', 1],72 ['rule3', 2],73 ]),74 mockResult([75 ['rule1', 1],76 ['rule2', 1],77 ]),78 ];79 expect(stripAnsi(format(results, { SORT_BY: 'warnings' }))).toMatchSnapshot();80 expect(81 stripAnsi(format(results, { SORT_BY: 'warnings', DESC: 'true' }))82 ).toMatchSnapshot();83});84test('omits result for ignored files', () => {85 const ignoredFileResults = {86 filePath: 'test.js',87 messages: [88 {89 fatal: false,90 severity: 1,91 message:92 'File ignored because of a matching ignore pattern. Use "--no-ignore" to override.',93 },94 ],95 errorCount: 0,96 warningCount: 1,97 fixableErrorCount: 0,98 fixableWarningCount: 0,99 usedDeprecatedRules: [],100 };101 expect(102 stripAnsi(103 format(104 [105 mockResult([106 ['rule1', 1],107 ['rule2', 2],108 ]),109 ignoredFileResults,110 ],111 {}112 )113 )114 ).toMatchSnapshot();115 expect(stripAnsi(format([ignoredFileResults], {}))).toMatchSnapshot();...
diff-test.js
Source:diff-test.js
...22 const b = values[1];23 const typeA = values[2];24 const typeB = values[3];25 test(`'${a}' and '${b}'`, () => {26 expect(stripAnsi(diff(a, b))).toBe(27 'Comparing different types of values.\n' +28 `Actual: '${typeB}', Expected: '${typeA}'`,29 );30 });31 });32});33describe('no visual difference', () => {34 [35 ['a', 'a'],36 [{}, {}],37 [[], []],38 [[1, 2], [1, 2]],39 [11, 11],40 [() => {}, () => {}],41 [null, null],42 [undefined, undefined],43 [{a: 1}, {a: 1}],44 [{a: {b: 5}}, {a: {b: 5}}],45 ].forEach(values => {46 test(47 `'${JSON.stringify(values[0])}' and '${JSON.stringify(values[1])}'`,48 () => {49 expect(stripAnsi(diff(values[0], values[1]))).toBe(50 'Compared values have no visual difference',51 );52 },53 );54 });55});56test('oneline strings', () => {57 expect(stripAnsi(diff('ab', 'aa'))).toMatch('aba');58 expect(diff('a', 'a')).toMatch(/no visual difference/);59 expect(stripAnsi(diff('123456789', '234567890'))).toMatch('1234567890');60});61test('multiline strings', () => {62 const result = diff(63`line 164line 265line 366line 4`,67`line 168line 269line 370line 4`,71 );72 expect(stripAnsi(result)).toMatch(/\- line 2/);73 expect(stripAnsi(result)).toMatch(/\+ line {2}2/);74});75test('objects', () => {76 const result = stripAnsi(diff({a: {b: {c: 5}}}, {a: {b: {c: 6}}}));77 expect(result).toMatch(/\-\s+\"c\"\: 5/);78 expect(result).toMatch(/\+\s+\"c\"\: 6/);79});80test('numbers', () => {81 const result = diff(123, 234);82 expect(stripAnsi(result)).toMatch(/Actual\: 234/);83 expect(stripAnsi(result)).toMatch(/Expected\: 123/);84});85test('booleans', () => {86 const result = diff(true, false);87 expect(stripAnsi(result)).toMatch(/Actual\: false/);88 expect(stripAnsi(result)).toMatch(/Expected\: true/);...
scripts.js
Source:scripts.js
...7 return execa(...args)8 .then(({ stdout, stderr, ...rest }) => ({9 fulfilled: true,10 rejected: false,11 stdout: stripAnsi(stdout),12 stderr: stripAnsi(stderr),13 ...rest,14 }))15 .catch(err => ({16 fulfilled: false,17 rejected: true,18 reason: err,19 stdout: '',20 stderr: stripAnsi(err.message.split('\n').slice(2).join('\n')),21 }));22}23module.exports = class ReactScripts {24 constructor(root) {25 this.root = root;26 }27 async start({ smoke = false, env = {} } = {}) {28 const port = await getPort();29 const options = {30 cwd: this.root,31 env: Object.assign(32 {},33 {34 CI: 'false',...
Using AI Code Generation
1const stripAnsi = require("playwright/lib/utils/stripAnsi");2const { chromium } = require("playwright");3(async () => {4 const browser = await chromium.launch();5 const page = await browser.newPage();6 const element = await page.$("h1");7 const text = await page.evaluate((e) => e.textContent, element);8 console.log(text);9 console.log(stripAnsi(text));10 await browser.close();11})();12### `stripAnsi(string)`13- [strip-ansi-cli](
Using AI Code Generation
1const { stripAnsi } = require('playwright-core/lib/utils/ansi');2const { test, expect } = require('@playwright/test');3test('test', async ({ page }) => {4 const text = await page.innerText('text=/Log in/');5 expect(stripAnsi(text)).toBe('Log in');6});7[MIT](LICENSE)
Using AI Code Generation
1const stripAnsi = require('strip-ansi');2const { test, expect } = require('@playwright/test');3test('should strip ansi', async ({ page }) => {4 const title = await page.innerText('.navbar__inner .navbar__title');5 expect(stripAnsi(title)).toBe('Playwright');6});
Using AI Code Generation
1const { stripAnsi } = require('@playwright/test/lib/utils/terminal');2const { test, expect } = require('@playwright/test');3test('my first test', async ({ page }) => {4 const title = page.locator('.navbar__inner .navbar__title');5 const text = await title.innerText();6 expect(stripAnsi(text)).toBe('Playwright');7});
Using AI Code Generation
1const { stripAnsi } = require('playwright/lib/utils/terminal');2const { stripAnsi } = require('playwright/lib/utils/terminal');3const { test, expect } = require('@playwright/test');4test('my test', async ({ page }) => {5 const title = page.locator('.navbar__inner .navbar__title');6 expect(await title.innerText()).toBe('Playwright');7 expect(stripAnsi(await title.innerText())).toBe('Playwright');8 expect(stripAnsi(await title.innerText())).toBe('Playwright');9});
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!!