This run took 190 seconds.
$ date --- stdout --- Sun Jun 30 00:07:44 UTC 2024 --- end --- $ git clone file:///srv/git/VisualEditor-VisualEditor.git repo --depth=1 -b master --- stderr --- Cloning into 'repo'... --- stdout --- --- end --- $ git config user.name libraryupgrader --- stdout --- --- end --- $ git config user.email tools.libraryupgrader@tools.wmflabs.org --- stdout --- --- end --- $ git submodule update --init --- stdout --- --- end --- $ grr init --- stdout --- Installed commit-msg hook. --- end --- $ git show-ref refs/heads/master --- stdout --- e91a86998bc964cc23f4ef8dae6b9a3553e80003 refs/heads/master --- end --- $ /usr/bin/npm audit --json --- stdout --- { "auditReportVersion": 2, "vulnerabilities": { "grunt-css-url-embed": { "name": "grunt-css-url-embed", "severity": "moderate", "isDirect": true, "via": [ "request" ], "effects": [], "range": ">=1.1.0", "nodes": [ "node_modules/grunt-css-url-embed" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } }, "request": { "name": "request", "severity": "moderate", "isDirect": false, "via": [ { "source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": [ "CWE-918" ], "cvss": { "score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N" }, "range": "<=2.88.2" }, "tough-cookie" ], "effects": [ "grunt-css-url-embed" ], "range": "*", "nodes": [ "node_modules/request" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } }, "tough-cookie": { "name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [ { "source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": [ "CWE-1321" ], "cvss": { "score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N" }, "range": "<4.1.3" } ], "effects": [ "request" ], "range": "<4.1.3", "nodes": [ "node_modules/tough-cookie" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } } }, "metadata": { "vulnerabilities": { "info": 0, "low": 0, "moderate": 3, "high": 0, "critical": 0, "total": 3 }, "dependencies": { "prod": 1, "dev": 730, "optional": 13, "peer": 1, "peerOptional": 0, "total": 730 } } } --- end --- $ /usr/bin/npm audit --json --- stdout --- { "auditReportVersion": 2, "vulnerabilities": { "grunt-css-url-embed": { "name": "grunt-css-url-embed", "severity": "moderate", "isDirect": true, "via": [ "request" ], "effects": [], "range": ">=1.1.0", "nodes": [ "node_modules/grunt-css-url-embed" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } }, "request": { "name": "request", "severity": "moderate", "isDirect": false, "via": [ { "source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": [ "CWE-918" ], "cvss": { "score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N" }, "range": "<=2.88.2" }, "tough-cookie" ], "effects": [ "grunt-css-url-embed" ], "range": "*", "nodes": [ "node_modules/request" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } }, "tough-cookie": { "name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [ { "source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": [ "CWE-1321" ], "cvss": { "score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N" }, "range": "<4.1.3" } ], "effects": [ "request" ], "range": "<4.1.3", "nodes": [ "node_modules/tough-cookie" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } } }, "metadata": { "vulnerabilities": { "info": 0, "low": 0, "moderate": 3, "high": 0, "critical": 0, "total": 3 }, "dependencies": { "prod": 1, "dev": 730, "optional": 13, "peer": 1, "peerOptional": 0, "total": 730 } } } --- end --- Attempting to npm audit fix $ /usr/bin/npm audit fix --dry-run --only=dev --json --- stderr --- npm WARN invalid config only="dev" set in command line options npm WARN invalid config Must be one of: null, prod, production --- stdout --- { "added": 730, "removed": 0, "changed": 0, "audited": 731, "funding": 109, "audit": { "auditReportVersion": 2, "vulnerabilities": { "grunt-css-url-embed": { "name": "grunt-css-url-embed", "severity": "moderate", "isDirect": true, "via": [ "request" ], "effects": [], "range": ">=1.1.0", "nodes": [ "node_modules/grunt-css-url-embed" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } }, "request": { "name": "request", "severity": "moderate", "isDirect": false, "via": [ { "source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": [ "CWE-918" ], "cvss": { "score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N" }, "range": "<=2.88.2" }, "tough-cookie" ], "effects": [ "grunt-css-url-embed" ], "range": "*", "nodes": [ "node_modules/request" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } }, "tough-cookie": { "name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [ { "source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": [ "CWE-1321" ], "cvss": { "score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N" }, "range": "<4.1.3" } ], "effects": [ "request" ], "range": "<4.1.3", "nodes": [ "node_modules/tough-cookie" ], "fixAvailable": { "name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true } } }, "metadata": { "vulnerabilities": { "info": 0, "low": 0, "moderate": 3, "high": 0, "critical": 0, "total": 3 }, "dependencies": { "prod": 1, "dev": 730, "optional": 13, "peer": 1, "peerOptional": 0, "total": 730 } } } } --- end --- {"added": 730, "removed": 0, "changed": 0, "audited": 731, "funding": 109, "audit": {"auditReportVersion": 2, "vulnerabilities": {"grunt-css-url-embed": {"name": "grunt-css-url-embed", "severity": "moderate", "isDirect": true, "via": ["request"], "effects": [], "range": ">=1.1.0", "nodes": ["node_modules/grunt-css-url-embed"], "fixAvailable": {"name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true}}, "request": {"name": "request", "severity": "moderate", "isDirect": false, "via": [{"source": 1096727, "name": "request", "dependency": "request", "title": "Server-Side Request Forgery in Request", "url": "https://github.com/advisories/GHSA-p8p7-x288-28g6", "severity": "moderate", "cwe": ["CWE-918"], "cvss": {"score": 6.1, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}, "range": "<=2.88.2"}, "tough-cookie"], "effects": ["grunt-css-url-embed"], "range": "*", "nodes": ["node_modules/request"], "fixAvailable": {"name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true}}, "tough-cookie": {"name": "tough-cookie", "severity": "moderate", "isDirect": false, "via": [{"source": 1097682, "name": "tough-cookie", "dependency": "tough-cookie", "title": "tough-cookie Prototype Pollution vulnerability", "url": "https://github.com/advisories/GHSA-72xf-g2v4-qvf3", "severity": "moderate", "cwe": ["CWE-1321"], "cvss": {"score": 6.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"}, "range": "<4.1.3"}], "effects": ["request"], "range": "<4.1.3", "nodes": ["node_modules/tough-cookie"], "fixAvailable": {"name": "grunt-css-url-embed", "version": "1.0.4", "isSemVerMajor": true}}}, "metadata": {"vulnerabilities": {"info": 0, "low": 0, "moderate": 3, "high": 0, "critical": 0, "total": 3}, "dependencies": {"prod": 1, "dev": 730, "optional": 13, "peer": 1, "peerOptional": 0, "total": 730}}}} $ /usr/bin/npm audit fix --only=dev --- stderr --- npm WARN invalid config only="dev" set in command line options npm WARN invalid config Must be one of: null, prod, production npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 --- stdout --- added 730 packages, and audited 731 packages in 15s 109 packages are looking for funding run `npm fund` for details # npm audit report request * Severity: moderate Server-Side Request Forgery in Request - https://github.com/advisories/GHSA-p8p7-x288-28g6 Depends on vulnerable versions of tough-cookie fix available via `npm audit fix --force` Will install grunt-css-url-embed@1.0.4, which is a breaking change node_modules/request grunt-css-url-embed >=1.1.0 Depends on vulnerable versions of request node_modules/grunt-css-url-embed tough-cookie <4.1.3 Severity: moderate tough-cookie Prototype Pollution vulnerability - https://github.com/advisories/GHSA-72xf-g2v4-qvf3 fix available via `npm audit fix --force` Will install grunt-css-url-embed@1.0.4, which is a breaking change node_modules/tough-cookie 3 moderate severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force --- end --- $ package-lock-lint package-lock.json --- stdout --- Checking package-lock.json --- end --- Verifying that tests still pass $ /usr/bin/npm ci --- stderr --- npm WARN deprecated har-validator@5.1.5: this library is no longer supported npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated kad-fs@0.0.4: This package is no longer maintained. npm WARN deprecated kad-memstore@0.0.1: This package is no longer maintained. --- stdout --- > visualeditor@0.0.0 postinstall > cd rebaser && npm ci added 191 packages, and audited 192 packages in 5s 10 packages are looking for funding run `npm fund` for details 17 vulnerabilities (9 moderate, 8 high) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. > visualeditor@0.0.0 prepare > grunt build Running "clean:dist" (clean) task >> 0 paths cleaned. Running "concat:rebaser.build" (concat) task Running "concat:visualEditor.rebase.scripts" (concat) task Running "concat:visualEditor.rebase.styles" (concat) task Running "concat:js" (concat) task Running "concat:css-apex" (concat) task Running "concat:css-wikimediaui" (concat) task Running "concat:jquery.i18n" (concat) task Running "concat:jquery.uls.data" (concat) task Running "less:dist" (less) task >> 3 stylesheets created. Running "clean:less" (clean) task >> 3 paths cleaned. Running "cssjanus:apex" (cssjanus) task File "dist/visualEditor-apex.rtl.css" created. Running "cssjanus:wikimediaui" (cssjanus) task File "dist/visualEditor-wikimediaui.rtl.css" created. Running "cssUrlEmbed:dist" (cssUrlEmbed) task Processing source file "dist/visualEditor-apex.css" 2 embeddable URLs found Processing source file "dist/visualEditor-apex.rtl.css" 2 embeddable URLs found Processing source file "dist/visualEditor-wikimediaui.css" 2 embeddable URLs found Processing source file "dist/visualEditor-wikimediaui.rtl.css" 2 embeddable URLs found >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-apex.css" created >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-apex.rtl.css" created >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-wikimediaui.css" created >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-wikimediaui.rtl.css" created Running "copy:i18n" (copy) task Copied 227 files Running "copy:lib" (copy) task Created 30 directories, copied 1490 files Running "buildloader:desktopDemoApex" (buildloader) task >> File "demos/ve/desktop.html" written. Running "buildloader:desktopDemoApexDist" (buildloader) task >> File "demos/ve/desktop-dist.html" written. Running "buildloader:desktopDemoWikimediaUI" (buildloader) task >> File "demos/ve/desktop-wikimediaui.html" written. Running "buildloader:desktopDemoWikimediaUIDist" (buildloader) task >> File "demos/ve/desktop-dist-wikimediaui.html" written. Running "buildloader:mobileDemo" (buildloader) task >> File "demos/ve/mobile.html" written. Running "buildloader:mobileDemoDist" (buildloader) task >> File "demos/ve/mobile-dist.html" written. Running "buildloader:minimalDemo" (buildloader) task >> File "demos/ve/minimal.html" written. Running "buildloader:minimalDemoRtl" (buildloader) task >> File "demos/ve/minimal-rtl.html" written. Running "buildloader:performanceTest" (buildloader) task >> File "demos/ve/performance.html" written. Running "buildloader:test" (buildloader) task >> File "tests/index.html" written. Done. added 730 packages, and audited 731 packages in 32s 109 packages are looking for funding run `npm fund` for details 3 moderate severity vulnerabilities To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. --- end --- $ /usr/bin/npm test --- stdout --- > visualeditor@0.0.0 test > grunt test Running "tyops:src" (tyops) task >> No typos found; 631 files checked for 21 typos. Running "eslint:all" (eslint) task Running "stylelint:all" (stylelint) task >> src/ui/styles/dialogs/ve.ui.FindAndReplaceDialog.less >> 7:1 ⚠ Unexpected browser feature "flexbox-gap" is not supported by Safari 12,13,14,11.1,12.1,13.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4 plugin/no-unsupported-browser-features >> 8:2 ⚠ Unexpected browser feature "flexbox-gap" is not supported by Safari 12,13,14,11.1,12.1,13.1, Safari on iOS 11.3-11.4,12.0-12.1,12.2-12.5,13.0-13.1,13.2,13.3,13.4-13.7,14.0-14.4 plugin/no-unsupported-browser-features >> >> ⚠ 2 problems (0 errors, 2 warnings) ⚠ 2 warnings >> Linted 70 files without errors Running "banana:all" (banana) task >> 1 message directory checked. Running "git-build" task Running "clean:dist" (clean) task >> 12 paths cleaned. Running "concat:rebaser.build" (concat) task Running "concat:visualEditor.rebase.scripts" (concat) task Running "concat:visualEditor.rebase.styles" (concat) task Running "concat:js" (concat) task Running "concat:css-apex" (concat) task Running "concat:css-wikimediaui" (concat) task Running "concat:jquery.i18n" (concat) task Running "concat:jquery.uls.data" (concat) task Running "less:dist" (less) task >> 3 stylesheets created. Running "clean:less" (clean) task >> 3 paths cleaned. Running "cssjanus:apex" (cssjanus) task File "dist/visualEditor-apex.rtl.css" created. Running "cssjanus:wikimediaui" (cssjanus) task File "dist/visualEditor-wikimediaui.rtl.css" created. Running "cssUrlEmbed:dist" (cssUrlEmbed) task Processing source file "dist/visualEditor-apex.css" 2 embeddable URLs found Processing source file "dist/visualEditor-apex.rtl.css" 2 embeddable URLs found Processing source file "dist/visualEditor-wikimediaui.css" 2 embeddable URLs found Processing source file "dist/visualEditor-wikimediaui.rtl.css" 2 embeddable URLs found >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-nw-se.svg" embedded >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-apex.css" created >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-apex.rtl.css" created >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-wikimediaui.css" created >> "../src/ui/styles/images/resize-ne-sw.svg" embedded File "dist/visualEditor-wikimediaui.rtl.css" created Running "copy:i18n" (copy) task Copied 227 files Running "copy:lib" (copy) task Created 30 directories, copied 1490 files Running "buildloader:desktopDemoApex" (buildloader) task >> File "demos/ve/desktop.html" written. Running "buildloader:desktopDemoApexDist" (buildloader) task >> File "demos/ve/desktop-dist.html" written. Running "buildloader:desktopDemoWikimediaUI" (buildloader) task >> File "demos/ve/desktop-wikimediaui.html" written. Running "buildloader:desktopDemoWikimediaUIDist" (buildloader) task >> File "demos/ve/desktop-dist-wikimediaui.html" written. Running "buildloader:mobileDemo" (buildloader) task >> File "demos/ve/mobile.html" written. Running "buildloader:mobileDemoDist" (buildloader) task >> File "demos/ve/mobile-dist.html" written. Running "buildloader:minimalDemo" (buildloader) task >> File "demos/ve/minimal.html" written. Running "buildloader:minimalDemoRtl" (buildloader) task >> File "demos/ve/minimal-rtl.html" written. Running "buildloader:performanceTest" (buildloader) task >> File "demos/ve/performance.html" written. Running "buildloader:test" (buildloader) task >> File "tests/index.html" written. Running "karma:chrome" (karma) task START: [33m30 06 2024 00:10:03.563:WARN [filelist]: [39mAll files matched by "/src/repo/node_modules/qunit/qunit/qunit.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.565:WARN [filelist]: [39mAll files matched by "/src/repo/src/dm/ve.dm.RebaseClient.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.565:WARN [filelist]: [39mAll files matched by "/src/repo/src/dm/ve.dm.SurfaceSynchronizer.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.565:WARN [filelist]: [39mAll files matched by "/src/repo/src/ui/widgets/ve.ui.AuthorItemWidget.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.565:WARN [filelist]: [39mAll files matched by "/src/repo/src/ui/tools/ve.ui.AuthorListPopupTool.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.565:WARN [filelist]: [39mAll files matched by "/src/repo/src/ve.FakePeer.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.566:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.RebaseDocState.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.566:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.RebaseServer.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.566:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.DocumentStore.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:03.566:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.ProtocolServer.js" were excluded or matched by prior matchers. [32m30 06 2024 00:10:12.189:INFO [karma-server]: [39mKarma v6.4.2 server started at http://localhost:9876/ [32m30 06 2024 00:10:12.190:INFO [launcher]: [39mLaunching browsers ChromeCustom with concurrency unlimited [32m30 06 2024 00:10:12.193:INFO [launcher]: [39mStarting browser ChromeHeadless [32m30 06 2024 00:10:12.690:INFO [Chrome Headless 123.0.6312.86 (Linux x86_64)]: [39mConnected on socket BctQodAb-5DLhsDSAAAB with id 4837220 Chrome Headless 123.0.6312.86 (Linux x86_64) LOG: 'Less has finished and no sheets were loaded.' ve ✔ compareClassLists ✔ isInstanceOfAny ✔ getDomAttributes ✔ setDomAttributes ✔ sparseSplice ✔ batchSplice ✔ batchPush ✔ insertIntoArray ✔ escapeHtml ✔ addHeadTag ✔ createDocumentFromHtml ✔ resolveUrl ✔ resolveAttributes ✔ fixBase ✔ isUriComponentValid ✔ safeDecodeURIComponent ✔ isBlockElement/isVoidElement ✔ graphemeSafeSubstring ✔ getCommonAncestor ✔ getCommonStartSequenceLength ✔ adjacentDomPosition ✔ deepFreeze ✔ deepFreeze (on cyclic structure) ✔ deepFreeze (recursive, aliased) ✔ ve.minimizeRects ve.DiffMatchPatch ✔ indexOf/lastIndexOf ve.EventSequencer ✔ EventSequencer ve.Scheduler ✔ Call with no real async ✔ Call with delay ✔ Test that throws an exception ✔ Test that never succeeds ve.Range ✔ Basic usage (isCollapsed, isBackwards, getLength, equals, equalsSelection, containsOffset, containsRange, touchesRange) ✔ Modification (flip, truncate, expand, translate) ✔ Factory methods & serialization (newCoveringRange, newFromJSON, toJSON) ve.Document ✔ getDocumentNode ve.Node ✔ getType ✔ getParent ✔ getRoot ve.BranchNode ✔ getChildren ✔ indexOf ✔ setDocument ve.sanitize ✔ ve.sanitizeHtml ✔ ve.sanitizeHtmlToDocument ✔ ve.setAttributeSafe ve.FakePeer ✔ interactions ve.dm.Annotation ✔ getHashObject ve.dm.AnnotationSet ✔ Basic usage ✔ Comparable ve.dm.LinkAnnotation ✔ getFragment ve.dm.NodeFactory ✔ getChildNodeTypes ✔ getParentNodeTypes ✔ canNodeHaveChildren ✔ canNodeTakeAnnotation ✔ canNodeHaveChildrenNotContent ✔ initialization ve.dm.Node ✔ canHaveChildren ✔ canHaveChildrenNotContent ✔ getLength ✔ getOuterLength ✔ setLength ✔ adjustLength ✔ getAttribute ✔ setRoot ✔ attach ✔ detach ✔ canBeMergedWith ✔ getClonedElement ve.dm.Converter ✔ getModelFromDom ✔ getModelFromDom with store argument ✔ getDomFromModel ✔ getFullData ✔ roundTripMetadata ve.dm.SourceConverter ✔ conversion ve.dm.BranchNode ✔ canHaveChildren ✔ canHaveChildrenNotContent ✔ setRoot ✔ setDocument ✔ push ✔ pop ✔ unshift ✔ shift ✔ splice ve.dm.LeafNode ✔ canHaveChildren ✔ canHaveChildrenNotContent ✔ getAnnotations ve.dm.TextNode ✔ getOuterLength ve.dm.Document ✔ constructor ✔ newBlankDocument ✔ getData ✔ getFullData ✔ cloneFromRange ✔ getRelativeOffset ✔ getRelativeRange ✔ getBranchNodeFromOffset ✔ hasSlugAtOffset ✔ getDataFromNode ✔ getOuterLength ✔ selectNodes ✔ rangeInsideOneLeafNode ✔ shallowCloneFromRange ✔ protection against double application of transactions ✔ getNearestCursorOffset ✔ Selection equality ✔ findText (plain text) ✔ findText (non-text content) ✔ fixupInsertion ✔ read-only and offset caching ve.dm.HashValueStore ✔ hash(es) ✔ value(s) ✔ slice ve.dm.InternalList ✔ getDocument ✔ queueItemHtml/getItemHtmlQueue ✔ convertToData ✔ clone ve.dm.LinearData ✔ basic usage ✔ slice(Object)/splice(Object)/batchSplice ve.dm.Transaction ✔ translateOffset ✔ translateRange ✔ getModifiedRange ✔ Metadata transactions ve.dm.TransactionBuilder ✔ newFromInsertion ✔ newFromRemoval ✔ newFromReplacement ✔ newFromDocumentInsertion ✔ newFromAttributeChanges ✔ newFromAnnotation ✔ newFromContentBranchConversion ✔ newFromWrap ✔ pushRetain ✔ pushReplacement ✔ pushReplaceElementAttribute ✔ isNoOp ✔ operations/build from operations ✔ newFromRemoval preserving metadata ve.dm.TransactionSquasher ✔ squash ve.dm.Change ✔ rebaseTransactions ✔ Change operations ✔ Rebase with conflicting annotations ✔ toJSON/deserialize/unsafeDeserialize ✔ Minified serialization ✔ Same-offset typing ve.dm.RebaseServer ✔ Rebase ve.dm.DocumentStore ✔ Create ve.dm.TransportServer ✔ Create ve.dm.TreeModifier ✔ treeDiff ✔ modify ✔ bare content ✔ unbalanced insertion ✔ applyTreeOperation: ensureNotText ✔ setupBlockSlugs ✔ checkEqualData ✔ TreeCursor#crossIgnoredNodes ✔ TreeCursor#normalizeCursor ve.dm.TransactionProcessor ✔ commit ✔ undo clear annotation ve.dm.Surface ✔ getDocument ✔ getSelection ✔ setSelection out of range ✔ contextChange events ✔ documentUpdate/select events ✔ breakpoint/undo/redo ✔ multi-user undo ✔ change rollback ✔ range translation ✔ staging ✔ getOffsetFromSourceOffset / getSourceOffsetFromOffset / getRangeFromSourceOffsets ✔ autosave ve.dm.SurfaceFragment ✔ constructor ✔ update ✔ getSelectedModels ✔ getAnnotations ✔ hasAnnotations ✔ adjustLinearSelection ✔ truncateLinearSelection ✔ collapseToStart/End ✔ expandLinearSelection (annotation) ✔ expandLinearSelection (closest) ✔ expandLinearSelection (word) ✔ removeContent ✔ delete ✔ insertContent/insertDocument ✔ changeAttributes ✔ wrapNodes/unwrapNodes ✔ rewrapNodes ✔ wrapAllNodes ✔ rewrapAllNodes ✔ isolateAndUnwrap ve.dm.SourceSurfaceFragment ✔ insertContent/insertDocument ve.dm.ModelRegistry ✔ register/unregister/matchElement ✔ isAnnotation ve.dm.MetaList ✔ constructor/getItems/getItemsInGroup/indexOf ✔ onNodeAttached/onNodeDetached ve.dm.Scalable ✔ construction/clone/getters/setters/toggleDefault/clearers ✔ getBoundedDimensions/getCurrentScale/isCurrentDimensionsValid/isTooSmall/isTooLarge ✔ isDefault/toggleDefault ✔ isDimensionsObjectValid ✔ getDimensionsFromValue ve.dm.LinearSelection ✔ Construction and getters (getRange(s)) ✔ Basic methods (collapse*, isCollased, equals, isNull) ✔ Factory methods & serialization (newFromJSON, toJSON, getDescription) ve.dm.NullSelection ✔ Construction and getters (getDocument, getRanges) ✔ Basic methods (collapse*, isCollased, equals, isNull) ✔ Factory methods & serialization (newFromJSON, toJSON, getDescription) ve.dm.TableSelection ✔ Construction and getters (getDocument, getRanges, getOuterRanges, getTableNode) ✔ Basic methods (expand, collapse*, getRange(s), isCollased, isSingleCell, equals, isNull, isFullRow/Col, getRow/ColCount) ✔ Factory methods & serialization (newFromJSON, toJSON, getDescription) ve.dm.FlatLinearData ✔ getType/isOpenElementData/isCloseElementData ✔ isElementData ✔ containsElementData ve.dm.ElementLinearData ✔ getAnnotationsFromOffset ✔ getAnnotationsFromRange ✔ getInsertionAnnotationsFromRange ✔ getAnnotatedRangeFromOffset ✔ trimOuterSpaceFromRange ✔ isContentOffset ✔ isStructuralOffset ✔ getCharacterData ✔ isPlainText ✔ getText ✔ getSourceText ✔ isContentData ✔ getRelativeOffset ✔ getRelativeContentOffset ✔ getNearestContentOffset ✔ getRelativeStructuralOffset ✔ getNearestStructuralOffset ✔ getWordRange ✔ sanitize ✔ countNonInternalElements ✔ hasContent ✔ getAnnotationHashesFromOffset ✔ getUsedStoreValues ✔ compareElements and compareElementsUnannotated ve.ce ✔ getDomHash/getDomText (with ve.dm.Converter) ✔ getDomHash/getDomText (without ve.dm.Converter) ✔ getOffset ✔ isShortcutKey ✔ nextCursorOffset ✔ resolveTestOffset ✔ fakeImes ✔ isAfterAnnotationBoundary ve.ce.Document ✔ Converter tests ✔ getNodeAndOffset ✔ attachedRoot ve.ce.Surface ✔ handleObservedChanges (content changes) ✔ handleDataTransfer/handleDataTransferItems ✔ getClipboardHash ✔ onCopy [33m30 06 2024 00:10:18.382:WARN [web-server]: [39m404: /null ✔ beforePaste/afterPaste ✔ onDocumentDragStart/onDocumentDrop ✔ getSelectionState ✔ findBlockSlug ✔ selectFirstSelectableContentOffset/selectLastSelectableContentOffset ✔ getViewportRange ✔ afterMutations ve.ce.RangeState ✔ Basic tests ve.ce.TextState ✔ getChangeTransaction ve.ce.NodeFactory ✔ splitNodeOnEnter/getDescription ✔ initialization ve.ce.AnnotationFactory ✔ canAnnotationBeActive/getDescription ✔ initialization ve.ce.Node ✔ getModel ✔ getParent ✔ attach ✔ detach ve.ce.BranchNode ✔ splitOnEnter ✔ canHaveChildren ✔ canHaveChildrenNotContent ✔ updateTagName ✔ getDomPosition ✔ onSplice ve.ce.ContentBranchNode ✔ getRenderedContents ve.ce.LeafNode ✔ splitOnEnter ✔ canHaveChildren ✔ canHaveChildrenNotContent ve.ce.Selection ✔ Rects ✔ getDirectionality ✔ equals ve.ce.LinearArrowKeyDownHandler ✔ special key down: linear arrow keys ve.ce.LinearDeleteKeyDownHandler ✔ special key down: linear backspace/delete ve.ce.LinearEnterKeyDownHandler ✔ special key down: linear enter ve.ce.LinearEscapeKeyDownHandler ✔ special key down: linear escape ve.ce.TableArrowKeyDownHandler ✔ special key down: table arrow keys (complex movements) ✔ special key down: table arrow keys (simple movements) ve.ce.TableDeleteKeyDownHandler ✔ special key down: table backspace/delete ve.ce.TableEnterKeyDownHandler ✔ special key down: table enter ve.ce.TableF2KeyDownHandler ✔ special key down: table f2 ve.ce.ResizableNode ✔ updateSizeLabel ✔ resize events ✔ notResizable ve.ce.TextNode ✔ getAnnotatedHtml ve.ce.TableNode ✔ getNearestCellNode ✔ getFirstSectionNode ✔ onTableMouseDown/onTableMouseMove/onTableMouseUp/onTableDblClick ✔ onTableMouseDown ve.init.Target ✔ createModelFromDom/parseDocument (source mode) ve.init.sa.Platform ✔ getUserConfig ✔ setUserConfig ✔ messages ✔ parsedMessage ve.init.ConflictableStorage ✔ Basic methods ✔ Conflict handling ve.ui.DataTransferHandlerFactory ✔ getHandlerNameForItem ve.ui.Trigger ✔ constructor ve.ui.Sequence ✔ findAndExecuteSequences ve.ui.DiffElement ✔ Diffing ✔ compareAttributes/describeChanges ve.ui.PreviewElement ✔ Basic tests ve.ui.AnnotationAction ✔ toggle ve.ui.BlockquoteAction ✔ wrap/unwrap/toggle ve.ui.ContentAction ✔ insert/remove/select/selectAll ve.ui.FormatAction ✔ convert ve.ui.IndentationAction ✔ increase/decrease ve.ui.LinkAction ✔ autolink ve.ui.ListAction ✔ (un)wrap ✔ toggle ve.ui.TableAction ✔ create / insert / mergeCells / delete / changeCellStyle / moveRelative ve.ui.WindowAction ✔ Basic open/close ve.ui.DSVFileTransferHandler ✔ getInsertableData ve.ui.UrlStringTransferHandler ✔ paste ve.ui.FindAndReplaceDialog ✔ find fragments ✔ replace all ve.ui.FragmentInspector ✔ Different selections and inputs Finished in 14.597 secs / 14.171 secs @ 00:10:28 GMT+0000 (Coordinated Universal Time) SUMMARY: ✔ 323 tests completed =============================== Coverage summary =============================== Statements : 81.58% ( 18742/22973 ) Branches : 73.41% ( 8094/11025 ) Functions : 73.13% ( 2357/3223 ) Lines : 81.36% ( 18210/22380 ) ================================================================================ Running "karma:firefox" (karma) task [33m30 06 2024 00:10:29.801:WARN [filelist]: [39mAll files matched by "/src/repo/node_modules/qunit/qunit/qunit.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.802:WARN [filelist]: [39mAll files matched by "/src/repo/src/dm/ve.dm.RebaseClient.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.802:WARN [filelist]: [39mAll files matched by "/src/repo/src/dm/ve.dm.SurfaceSynchronizer.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.803:WARN [filelist]: [39mAll files matched by "/src/repo/src/ui/widgets/ve.ui.AuthorItemWidget.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.803:WARN [filelist]: [39mAll files matched by "/src/repo/src/ui/tools/ve.ui.AuthorListPopupTool.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.803:WARN [filelist]: [39mAll files matched by "/src/repo/src/ve.FakePeer.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.803:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.RebaseDocState.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.803:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.RebaseServer.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.803:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.DocumentStore.js" were excluded or matched by prior matchers. [33m30 06 2024 00:10:29.804:WARN [filelist]: [39mAll files matched by "/src/repo/rebaser/src/dm/ve.dm.ProtocolServer.js" were excluded or matched by prior matchers. [32m30 06 2024 00:10:29.861:INFO [karma-server]: [39mKarma v6.4.2 server started at http://localhost:9876/ [32m30 06 2024 00:10:29.861:INFO [launcher]: [39mLaunching browsers FirefoxHeadless with concurrency unlimited [32m30 06 2024 00:10:29.868:INFO [launcher]: [39mStarting browser FirefoxHeadless [32m30 06 2024 00:10:31.858:INFO [Firefox 115.0 (Linux x86_64)]: [39mConnected on socket iOqoodKJ7lqZNCaSAAAD with id 35826464 Firefox 115.0 (Linux x86_64) LOG: 'Less has finished and no sheets were loaded.' ................................................................................ ................................................................................ ................................................................................ ........[33m30 06 2024 00:10:37.139:WARN [web-server]: [39m404: /null ........................................................................ ... Firefox 115.0 (Linux x86_64): Executed 323 of 323 SUCCESS (15.942 secs / 15.787 secs) Done. --- end --- $ package-lock-lint package-lock.json --- stdout --- Checking package-lock.json --- end --- [DNM] there are no updates $ git add . --- stdout --- --- end --- $ git commit -F /tmp/tmpahryc7mu --- stdout --- On branch master Your branch is up to date with 'origin/master'. nothing to commit, working tree clean --- end ---