mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2026-02-04 01:42:52 +00:00
Compare commits
8 Commits
bb4139ffdb
...
bd8f3530bd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd8f3530bd | ||
|
|
8ea8286cec | ||
|
|
7ca48f876b | ||
|
|
7c3c59c79f | ||
|
|
ef7f444404 | ||
|
|
f509e0bdba | ||
|
|
9b7af474bb | ||
|
|
28982b8bc2 |
@@ -109,7 +109,7 @@ services:
|
||||
- "cypress_logs:/test/results"
|
||||
- "./dev/resolv.conf:/etc/resolv.conf:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
command: cypress run --browser chrome --config-file=cypress/config/ci.js
|
||||
command: cypress run --browser chrome --config-file=cypress/config/ci.mjs
|
||||
networks:
|
||||
- fulltest
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@ services:
|
||||
- "../test/results:/results"
|
||||
- "./dev/resolv.conf:/etc/resolv.conf:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
command: cypress run --browser chrome --config-file=cypress/config/ci.js
|
||||
command: cypress run --browser chrome --config-file=cypress/config/ci.mjs
|
||||
networks:
|
||||
- nginx_proxy_manager
|
||||
|
||||
|
||||
@@ -18,20 +18,20 @@
|
||||
"dependencies": {
|
||||
"@tabler/core": "^1.4.0",
|
||||
"@tabler/icons-react": "^3.35.0",
|
||||
"@tanstack/react-query": "^5.90.6",
|
||||
"@tanstack/react-query": "^5.90.20",
|
||||
"@tanstack/react-table": "^8.21.3",
|
||||
"@uiw/react-textarea-code-editor": "^3.1.1",
|
||||
"classnames": "^2.5.1",
|
||||
"country-flag-icons": "^1.5.21",
|
||||
"date-fns": "^4.1.0",
|
||||
"ez-modal-react": "^1.0.5",
|
||||
"formik": "^2.4.6",
|
||||
"formik": "^2.4.9",
|
||||
"generate-password-browser": "^1.1.0",
|
||||
"humps": "^2.0.1",
|
||||
"query-string": "^9.3.1",
|
||||
"react": "^19.2.3",
|
||||
"react": "^19.2.4",
|
||||
"react-bootstrap": "^2.10.10",
|
||||
"react-dom": "^19.2.3",
|
||||
"react-dom": "^19.2.4",
|
||||
"react-intl": "^7.1.14",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-router-dom": "^7.9.5",
|
||||
@@ -48,7 +48,7 @@
|
||||
"@testing-library/react": "^16.3.0",
|
||||
"@types/country-flag-icons": "^1.2.2",
|
||||
"@types/humps": "^2.0.6",
|
||||
"@types/react": "^19.2.7",
|
||||
"@types/react": "^19.2.9",
|
||||
"@types/react-dom": "^19.2.3",
|
||||
"@types/react-table": "^7.7.20",
|
||||
"@vitejs/plugin-react": "^5.1.2",
|
||||
|
||||
@@ -825,10 +825,10 @@
|
||||
resolved "https://registry.npmjs.org/@tabler/icons/-/icons-3.35.0.tgz"
|
||||
integrity sha512-yYXe+gJ56xlZFiXwV9zVoe3FWCGuZ/D7/G4ZIlDtGxSx5CGQK110wrnT29gUj52kEZoxqF7oURTk97GQxELOFQ==
|
||||
|
||||
"@tanstack/query-core@5.90.6":
|
||||
version "5.90.6"
|
||||
resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.6.tgz"
|
||||
integrity sha512-AnZSLF26R8uX+tqb/ivdrwbVdGemdEDm1Q19qM6pry6eOZ6bEYiY7mWhzXT1YDIPTNEVcZ5kYP9nWjoxDLiIVw==
|
||||
"@tanstack/query-core@5.90.20":
|
||||
version "5.90.20"
|
||||
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.90.20.tgz#e12128e39210715d4ce4fb299c33498ac297771e"
|
||||
integrity sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==
|
||||
|
||||
"@tanstack/query-devtools@5.92.0":
|
||||
version "5.92.0"
|
||||
@@ -842,12 +842,12 @@
|
||||
dependencies:
|
||||
"@tanstack/query-devtools" "5.92.0"
|
||||
|
||||
"@tanstack/react-query@^5.90.6":
|
||||
version "5.90.6"
|
||||
resolved "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.6.tgz"
|
||||
integrity sha512-gB1sljYjcobZKxjPbKSa31FUTyr+ROaBdoH+wSSs9Dk+yDCmMs+TkTV3PybRRVLC7ax7q0erJ9LvRWnMktnRAw==
|
||||
"@tanstack/react-query@^5.90.20":
|
||||
version "5.90.20"
|
||||
resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.90.20.tgz#42bb7018bfedc72f216b6e9b4052c919063f350b"
|
||||
integrity sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==
|
||||
dependencies:
|
||||
"@tanstack/query-core" "5.90.6"
|
||||
"@tanstack/query-core" "5.90.20"
|
||||
|
||||
"@tanstack/react-table@^8.21.3":
|
||||
version "8.21.3"
|
||||
@@ -1045,10 +1045,10 @@
|
||||
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz"
|
||||
integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==
|
||||
|
||||
"@types/react@*", "@types/react@16 || 17 || 18 || 19", "@types/react@>=16.9.11", "@types/react@^19.2.7":
|
||||
version "19.2.7"
|
||||
resolved "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz"
|
||||
integrity sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==
|
||||
"@types/react@*", "@types/react@16 || 17 || 18 || 19", "@types/react@>=16.9.11", "@types/react@^19.2.9":
|
||||
version "19.2.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.9.tgz#84ec7669742bb3e7e2e8d6a5258d95ead7764200"
|
||||
integrity sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==
|
||||
dependencies:
|
||||
csstype "^3.2.2"
|
||||
|
||||
@@ -1524,10 +1524,10 @@ find-root@^1.1.0:
|
||||
resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz"
|
||||
integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
|
||||
|
||||
formik@^2.4.6:
|
||||
version "2.4.6"
|
||||
resolved "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz"
|
||||
integrity sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==
|
||||
formik@^2.4.9:
|
||||
version "2.4.9"
|
||||
resolved "https://registry.yarnpkg.com/formik/-/formik-2.4.9.tgz#7e5b81e9c9e215d0ce2ac8fed808cf7fba0cd204"
|
||||
integrity sha512-5nI94BMnlFDdQRBY4Sz39WkhxajZJ57Fzs8wVbtsQlm5ScKIR1QLYqv/ultBnobObtlUyxpxoLodpixrsf36Og==
|
||||
dependencies:
|
||||
"@types/hoist-non-react-statics" "^3.3.1"
|
||||
deepmerge "^2.1.1"
|
||||
@@ -2418,10 +2418,10 @@ react-bootstrap@^2.10.10:
|
||||
uncontrollable "^7.2.1"
|
||||
warning "^4.0.3"
|
||||
|
||||
react-dom@^19.2.3:
|
||||
version "19.2.3"
|
||||
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz"
|
||||
integrity sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==
|
||||
react-dom@^19.2.4:
|
||||
version "19.2.4"
|
||||
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.4.tgz#6fac6bd96f7db477d966c7ec17c1a2b1ad8e6591"
|
||||
integrity sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==
|
||||
dependencies:
|
||||
scheduler "^0.27.0"
|
||||
|
||||
@@ -2528,10 +2528,10 @@ react-transition-group@^4.3.0, react-transition-group@^4.4.5:
|
||||
loose-envify "^1.4.0"
|
||||
prop-types "^15.6.2"
|
||||
|
||||
react@^19.2.3:
|
||||
version "19.2.3"
|
||||
resolved "https://registry.npmjs.org/react/-/react-19.2.3.tgz"
|
||||
integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==
|
||||
react@^19.2.4:
|
||||
version "19.2.4"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-19.2.4.tgz#438e57baa19b77cb23aab516cf635cd0579ee09a"
|
||||
integrity sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==
|
||||
|
||||
readdirp@^4.0.1:
|
||||
version "4.1.2"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM cypress/included:14.0.1
|
||||
FROM cypress/included:15.9.0
|
||||
|
||||
# Disable Cypress CLI colors
|
||||
ENV FORCE_COLOR=0
|
||||
|
||||
@@ -24,10 +24,10 @@ describe('Streams', () => {
|
||||
|
||||
// Create a custom cert pair
|
||||
cy.exec('mkcert -cert-file=/test/cypress/fixtures/website1.pem -key-file=/test/cypress/fixtures/website1.key.pem website1.example.com').then((result) => {
|
||||
expect(result.code).to.eq(0);
|
||||
expect(result.exitCode).to.eq(0);
|
||||
// Install CA
|
||||
cy.exec('mkcert -install').then((result) => {
|
||||
expect(result.code).to.eq(0);
|
||||
expect(result.exitCode).to.eq(0);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -56,7 +56,7 @@ describe('Streams', () => {
|
||||
expect(data).to.have.property('udp_forwarding', false);
|
||||
|
||||
cy.exec('curl --noproxy -- http://website1.example.com:1500').then((result) => {
|
||||
expect(result.code).to.eq(0);
|
||||
expect(result.exitCode).to.eq(0);
|
||||
expect(result.stdout).to.contain('yay it works');
|
||||
});
|
||||
});
|
||||
@@ -107,7 +107,7 @@ describe('Streams', () => {
|
||||
expect(data).to.have.property('udp_forwarding', true);
|
||||
|
||||
cy.exec('curl --noproxy -- http://website1.example.com:1502').then((result) => {
|
||||
expect(result.code).to.eq(0);
|
||||
expect(result.exitCode).to.eq(0);
|
||||
expect(result.stdout).to.contain('yay it works');
|
||||
});
|
||||
});
|
||||
@@ -176,6 +176,7 @@ describe('Streams', () => {
|
||||
'cert_chain_of_trust',
|
||||
'cert_extlifeSpan',
|
||||
'cert_revocation',
|
||||
'engine_problem',
|
||||
'overall_grade',
|
||||
];
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const logger = require('./logger');
|
||||
const axios = require('axios').default;
|
||||
import axios from "axios";
|
||||
import logger from "./logger.mjs";
|
||||
|
||||
const BackendApi = function (config, token) {
|
||||
this.config = config;
|
||||
@@ -22,18 +22,16 @@ BackendApi.prototype.setToken = function(token) {
|
||||
* @param {bool} returnOnError
|
||||
*/
|
||||
BackendApi.prototype._prepareOptions = function (returnOnError) {
|
||||
let options = {
|
||||
const options = {
|
||||
headers: {
|
||||
Accept: 'application/json'
|
||||
}
|
||||
}
|
||||
Accept: "application/json",
|
||||
},
|
||||
};
|
||||
if (this.token) {
|
||||
options.headers.Authorization = 'Bearer ' + this.token;
|
||||
options.headers.Authorization = `Bearer ${this.token}`;
|
||||
}
|
||||
if (returnOnError) {
|
||||
options.validateStatus = function () {
|
||||
return true;
|
||||
}
|
||||
options.validateStatus = () => true;
|
||||
}
|
||||
return options;
|
||||
};
|
||||
@@ -44,13 +42,30 @@ BackendApi.prototype._prepareOptions = function(returnOnError) {
|
||||
* @param {function} reject
|
||||
* @param {bool} returnOnError
|
||||
*/
|
||||
BackendApi.prototype._handleResponse = function(response, resolve, reject, returnOnError) {
|
||||
logger('Response data:', response.data);
|
||||
if (!returnOnError && typeof response.data === 'object' && typeof response.data.error === 'object') {
|
||||
if (typeof response.data === 'object' && typeof response.data.error === 'object' && typeof response.data.error.message !== 'undefined') {
|
||||
reject(new Error(response.data.error.code + ': ' + response.data.error.message));
|
||||
BackendApi.prototype._handleResponse = (
|
||||
response,
|
||||
resolve,
|
||||
reject,
|
||||
returnOnError,
|
||||
) => {
|
||||
logger("Response data:", response.data);
|
||||
if (
|
||||
!returnOnError &&
|
||||
typeof response.data === "object" &&
|
||||
typeof response.data.error === "object"
|
||||
) {
|
||||
if (
|
||||
typeof response.data === "object" &&
|
||||
typeof response.data.error === "object" &&
|
||||
typeof response.data.error.message !== "undefined"
|
||||
) {
|
||||
reject(
|
||||
new Error(
|
||||
`${response.data.error.code}: ${response.data.error.message}`,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
reject(new Error('Error ' + response.status));
|
||||
reject(new Error(`Error ${response.status}`));
|
||||
}
|
||||
} else {
|
||||
resolve(response.data);
|
||||
@@ -63,10 +78,10 @@ BackendApi.prototype._handleResponse = function(response, resolve, reject, retur
|
||||
* @param {function} reject
|
||||
* @param {bool} returnOnError
|
||||
*/
|
||||
BackendApi.prototype._handleError = function(err, resolve, reject, returnOnError) {
|
||||
logger('Axios Error:', err);
|
||||
BackendApi.prototype._handleError = (err, resolve, reject, returnOnError) => {
|
||||
logger("Axios Error:", err);
|
||||
if (returnOnError) {
|
||||
resolve(typeof err.response.data !== 'undefined' ? err.response.data : err);
|
||||
resolve(typeof err.response.data !== "undefined" ? err.response.data : err);
|
||||
} else {
|
||||
reject(err);
|
||||
}
|
||||
@@ -84,11 +99,11 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
|
||||
const options = this._prepareOptions(returnOnError);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
let opts = {
|
||||
const opts = {
|
||||
method: method,
|
||||
url: path,
|
||||
...options
|
||||
}
|
||||
...options,
|
||||
};
|
||||
if (data !== undefined && data !== null) {
|
||||
opts.data = data;
|
||||
}
|
||||
@@ -110,16 +125,17 @@ BackendApi.prototype.request = function (method, path, returnOnError, data) {
|
||||
* @returns {Promise<object>}
|
||||
*/
|
||||
BackendApi.prototype.postForm = function (path, form, returnOnError) {
|
||||
logger('POST', this.config.baseUrl + path);
|
||||
logger("POST", this.config.baseUrl + path);
|
||||
const options = this._prepareOptions(returnOnError);
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const opts = {
|
||||
...options,
|
||||
...form.getHeaders(),
|
||||
}
|
||||
};
|
||||
|
||||
this.axios.post(path, form, opts)
|
||||
this.axios
|
||||
.post(path, form, opts)
|
||||
.then((response) => {
|
||||
this._handleResponse(response, resolve, reject, returnOnError);
|
||||
})
|
||||
@@ -129,4 +145,4 @@ BackendApi.prototype.postForm = function (path, form, returnOnError) {
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = BackendApi;
|
||||
export default BackendApi;
|
||||
@@ -1,7 +0,0 @@
|
||||
const _ = require("lodash");
|
||||
|
||||
module.exports = function() {
|
||||
let arr = _.values(arguments);
|
||||
arr.unshift('[Backend API]');
|
||||
console.log.apply(null, arr);
|
||||
};
|
||||
7
test/cypress/plugins/backendApi/logger.mjs
Normal file
7
test/cypress/plugins/backendApi/logger.mjs
Normal file
@@ -0,0 +1,7 @@
|
||||
const log = (...args) => {
|
||||
const arr = args;
|
||||
arr.unshift("[Backend API]");
|
||||
console.log(...arr);
|
||||
};
|
||||
|
||||
export default log;
|
||||
@@ -1,13 +1,12 @@
|
||||
const fs = require('fs');
|
||||
const FormData = require('form-data');
|
||||
const logger = require('./logger');
|
||||
const Client = require('./client');
|
||||
import fs from "node:fs";
|
||||
import FormData from "form-data";
|
||||
import Client from "./client.mjs";
|
||||
import logger from "./logger.mjs";
|
||||
|
||||
module.exports = function (config) {
|
||||
logger('Client Ready using', config.baseUrl);
|
||||
export default (config) => {
|
||||
logger("Client Ready using", config.baseUrl);
|
||||
|
||||
return {
|
||||
|
||||
/**
|
||||
* @param {object} options
|
||||
* @param {string} options.path API path
|
||||
@@ -18,7 +17,7 @@ module.exports = function (config) {
|
||||
backendApiGet: (options) => {
|
||||
const api = new Client(config);
|
||||
api.setToken(options.token);
|
||||
return api.request('get', options.path, options.returnOnError || false);
|
||||
return api.request("get", options.path, options.returnOnError || false);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -32,7 +31,12 @@ module.exports = function (config) {
|
||||
backendApiPost: (options) => {
|
||||
const api = new Client(config);
|
||||
api.setToken(options.token);
|
||||
return api.request('post', options.path, options.returnOnError || false, options.data);
|
||||
return api.request(
|
||||
"post",
|
||||
options.path,
|
||||
options.returnOnError || false,
|
||||
options.data,
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -48,8 +52,11 @@ module.exports = function (config) {
|
||||
api.setToken(options.token);
|
||||
|
||||
const form = new FormData();
|
||||
for (let [key, value] of Object.entries(options.files)) {
|
||||
form.append(key, fs.createReadStream(config.fixturesFolder + '/' + value));
|
||||
for (const [key, value] of Object.entries(options.files)) {
|
||||
form.append(
|
||||
key,
|
||||
fs.createReadStream(`${config.fixturesFolder}/${value}`),
|
||||
);
|
||||
}
|
||||
return api.postForm(options.path, form, options.returnOnError || false);
|
||||
},
|
||||
@@ -65,7 +72,12 @@ module.exports = function (config) {
|
||||
backendApiPut: (options) => {
|
||||
const api = new Client(config);
|
||||
api.setToken(options.token);
|
||||
return api.request('put', options.path, options.returnOnError || false, options.data);
|
||||
return api.request(
|
||||
"put",
|
||||
options.path,
|
||||
options.returnOnError || false,
|
||||
options.data,
|
||||
);
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -78,7 +90,11 @@ module.exports = function (config) {
|
||||
backendApiDelete: (options) => {
|
||||
const api = new Client(config);
|
||||
api.setToken(options.token);
|
||||
return api.request('delete', options.path, options.returnOnError || false);
|
||||
}
|
||||
return api.request(
|
||||
"delete",
|
||||
options.path,
|
||||
options.returnOnError || false,
|
||||
);
|
||||
},
|
||||
};
|
||||
};
|
||||
@@ -1,20 +1,26 @@
|
||||
import { SwaggerValidation } from '@jc21/cypress-swagger-validation';
|
||||
import chalk from 'chalk';
|
||||
import { SwaggerValidation } from "@jc21/cypress-swagger-validation";
|
||||
import chalk from "chalk";
|
||||
import backendTask from "./backendApi/task.mjs";
|
||||
|
||||
export default (on, config) => {
|
||||
// Replace swaggerBase config var wildcard
|
||||
if (typeof config.env.swaggerBase !== 'undefined') {
|
||||
config.env.swaggerBase = config.env.swaggerBase.replace('{{baseUrl}}', config.baseUrl);
|
||||
if (typeof config.env.swaggerBase !== "undefined") {
|
||||
config.env.swaggerBase = config.env.swaggerBase.replace(
|
||||
"{{baseUrl}}",
|
||||
config.baseUrl,
|
||||
);
|
||||
}
|
||||
|
||||
// Plugin Events
|
||||
on('task', SwaggerValidation(config));
|
||||
on('task', require('./backendApi/task')(config));
|
||||
on('task', {
|
||||
on("task", SwaggerValidation(config));
|
||||
on("task", backendTask(config));
|
||||
on("task", {
|
||||
log(message) {
|
||||
console.log(`${chalk.cyan.bold('[')}${chalk.blue.bold('LOG')}${chalk.cyan.bold(']')} ${chalk.red.bold(message)}`);
|
||||
console.log(
|
||||
`${chalk.cyan.bold("[")}${chalk.blue.bold("LOG")}${chalk.cyan.bold("]")} ${chalk.red.bold(message)}`,
|
||||
);
|
||||
return null;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return config;
|
||||
|
||||
@@ -35,7 +35,7 @@ Cypress.Commands.add("validateSwaggerFile", (url, savePath) => {
|
||||
.then((response) => cy.writeFile(savePath, response.body, { log: false }))
|
||||
.then(() => cy.exec(`yarn swagger-lint '${savePath}'`, { failOnNonZeroExit: false }))
|
||||
.then((result) => cy.task('log', `Swagger Vacuum Results:\n${result.stdout || ''}`)
|
||||
.then(() => expect(result.code).to.eq(0)));
|
||||
.then(() => expect(result.exitCode).to.eq(0)));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import './commands';
|
||||
import './commands.mjs';
|
||||
|
||||
Cypress.on('uncaught:exception', (/*err, runnable*/) => {
|
||||
// returning false here prevents Cypress from
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
"cypress/**/*.js",
|
||||
"cypress/config/dev.mjs",
|
||||
"cypress/config/ci.mjs",
|
||||
"cypress/plugins/index.mjs"
|
||||
"cypress/plugins/index.mjs",
|
||||
"cypress/plugins/backendApi/task.mjs",
|
||||
"cypress/plugins/backendApi/logger.mjs",
|
||||
"cypress/plugins/backendApi/client.mjs",
|
||||
"cypress/support/commands.mjs"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user