mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
Jest fixes 47
This commit is contained in:
+36
-50
@@ -1,73 +1,62 @@
|
||||
const { defineConfig } = require("cypress");
|
||||
const net = require("net");
|
||||
const { defineConfig } = require('cypress')
|
||||
const net = require('net')
|
||||
|
||||
const DEFAULT_DB_HOST =
|
||||
process.env.CYPRESS_DB_HOST ?? process.env.MARIADB_HOST ?? "127.0.0.1";
|
||||
const DEFAULT_DB_PORT = Number(
|
||||
process.env.CYPRESS_DB_PORT ?? process.env.MARIADB_PORT ?? 3306,
|
||||
);
|
||||
const DEFAULT_DB_WAIT_TIMEOUT_MS = Number(
|
||||
process.env.CYPRESS_DB_WAIT_TIMEOUT ?? 30_000,
|
||||
);
|
||||
const DEFAULT_DB_HOST = process.env.CYPRESS_DB_HOST ?? process.env.MARIADB_HOST ?? '127.0.0.1'
|
||||
const DEFAULT_DB_PORT = Number(process.env.CYPRESS_DB_PORT ?? process.env.MARIADB_PORT ?? 3306)
|
||||
const DEFAULT_DB_WAIT_TIMEOUT_MS = Number(process.env.CYPRESS_DB_WAIT_TIMEOUT ?? 30_000)
|
||||
|
||||
const RETRY_DELAY_MS = 1_000;
|
||||
const SOCKET_TIMEOUT_MS = 2_000;
|
||||
const RETRY_DELAY_MS = 1_000
|
||||
const SOCKET_TIMEOUT_MS = 2_000
|
||||
|
||||
/**
|
||||
* @param {{ host?: string; port?: number; timeoutMs?: number }} [options]
|
||||
* @param {{ dbHost?: string; dbPort?: number; dbWaitTimeoutMs?: number }} [env]
|
||||
*/
|
||||
async function waitForDatabase(options = {}, env = {}) {
|
||||
const host = options.host ?? env.dbHost ?? DEFAULT_DB_HOST;
|
||||
const port = Number(options.port ?? env.dbPort ?? DEFAULT_DB_PORT);
|
||||
const timeoutMs = Number(
|
||||
options.timeoutMs ?? env.dbWaitTimeoutMs ?? DEFAULT_DB_WAIT_TIMEOUT_MS,
|
||||
);
|
||||
const host = options.host ?? env.dbHost ?? DEFAULT_DB_HOST
|
||||
const port = Number(options.port ?? env.dbPort ?? DEFAULT_DB_PORT)
|
||||
const timeoutMs = Number(options.timeoutMs ?? env.dbWaitTimeoutMs ?? DEFAULT_DB_WAIT_TIMEOUT_MS)
|
||||
|
||||
if (!Number.isFinite(port)) {
|
||||
throw new Error(`Invalid database port provided for waitForDbHealthy: ${port}`);
|
||||
throw new Error(`Invalid database port provided for waitForDbHealthy: ${port}`)
|
||||
}
|
||||
|
||||
const deadline = Date.now() + timeoutMs;
|
||||
const deadline = Date.now() + timeoutMs
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const attemptConnection = () => {
|
||||
const socket = net.createConnection({ host, port });
|
||||
const socket = net.createConnection({ host, port })
|
||||
|
||||
const cleanup = () => {
|
||||
socket.removeAllListeners();
|
||||
};
|
||||
socket.removeAllListeners()
|
||||
}
|
||||
|
||||
const scheduleRetry = (error) => {
|
||||
cleanup();
|
||||
socket.destroy();
|
||||
const scheduleRetry = error => {
|
||||
cleanup()
|
||||
socket.destroy()
|
||||
|
||||
if (Date.now() >= deadline) {
|
||||
reject(
|
||||
new Error(
|
||||
`Timed out waiting for MariaDB at ${host}:${port} (${error.message})`,
|
||||
),
|
||||
);
|
||||
return;
|
||||
reject(new Error(`Timed out waiting for MariaDB at ${host}:${port} (${error.message})`))
|
||||
return
|
||||
}
|
||||
|
||||
setTimeout(attemptConnection, RETRY_DELAY_MS);
|
||||
};
|
||||
setTimeout(attemptConnection, RETRY_DELAY_MS)
|
||||
}
|
||||
|
||||
socket.once("connect", () => {
|
||||
cleanup();
|
||||
socket.end();
|
||||
resolve(null);
|
||||
});
|
||||
socket.once('connect', () => {
|
||||
cleanup()
|
||||
socket.end()
|
||||
resolve(null)
|
||||
})
|
||||
|
||||
socket.once("error", scheduleRetry);
|
||||
socket.once('error', scheduleRetry)
|
||||
socket.setTimeout(SOCKET_TIMEOUT_MS, () => {
|
||||
scheduleRetry(new Error("Connection attempt timed out"));
|
||||
});
|
||||
};
|
||||
scheduleRetry(new Error('Connection attempt timed out'))
|
||||
})
|
||||
}
|
||||
|
||||
attemptConnection();
|
||||
});
|
||||
attemptConnection()
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = defineConfig({
|
||||
@@ -86,17 +75,14 @@ module.exports = defineConfig({
|
||||
return config
|
||||
},
|
||||
baseUrl: 'http://localhost:5173/',
|
||||
specPattern: [
|
||||
'cypress/e2e/**/*.cy.{js,jsx,ts,tsx}',
|
||||
'cypress/e2e/**/*.spec.{js,jsx,ts,tsx}',
|
||||
],
|
||||
specPattern: ['cypress/e2e/**/*.cy.{js,jsx,ts,tsx}', 'cypress/e2e/**/*.spec.{js,jsx,ts,tsx}'],
|
||||
},
|
||||
env: {
|
||||
databaseResetUrl: "http://localhost:4000/test/reset-test-database",
|
||||
databaseResetUrl: 'http://localhost:4000/test/reset-test-database',
|
||||
dbHost: DEFAULT_DB_HOST,
|
||||
dbPort: DEFAULT_DB_PORT,
|
||||
dbWaitTimeoutMs: DEFAULT_DB_WAIT_TIMEOUT_MS,
|
||||
},
|
||||
viewportHeight: 900,
|
||||
viewportWidth: 1200,
|
||||
});
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user