Невозможно записать журналы консоли Cypress в TypeScript для Linux и MacOS.Linux

Ответить
Anonymous
 Невозможно записать журналы консоли Cypress в TypeScript для Linux и MacOS.

Сообщение Anonymous »

Я выполняю файл спецификации cypress, используя следующий код, и хочу сохранять журналы, созданные cypress, в консоли.
Примечание: результат содержит тестовые данные но я явно хотел записать журналы консоли.

Код: Выделить всё

consoleLogger.bind({ 'xyz': 'abc' })
const result = await cypress.run({
spec: '/../test.cy.js',
project: ProjectConfiguration.projectDir,
})
consoleLogger.unbind()
Для записи журнала я использую следующий код.
Примечание. Этот код отлично работает на компьютере с Windows.< /p>

Код: Выделить всё

class ConsoleLogger {
private originalStdoutWrite: any
private originalStderrWrite: any
private logger: any

constructor(testLogger: any) {
this.logger = testLogger
this.originalStdoutWrite = process.stdout.write.bind(process.stdout)
this.originalStderrWrite = process.stderr.write.bind(process.stderr)
}

public bind(extra: {}) {
// Override stdout to capture Cypress console logs
process.stdout.write = (
chunk: string | Uint8Array,
...args: any[]
): boolean => {
executionLogger.info('start: stdout')
const output = chunk.toString().trim()
if (output) {
try {
this.logger.info(output, {
...extra,
source: 'stdout',
})
} catch (err) {
this.logger.error(err)
}
}
return true
}

process.stderr.write = (
chunk: string | Uint8Array,
...args: any[]
): boolean => {
const output = chunk.toString().trim()
if (output) {
try {
this.logger.error(output, {
...extra,
source: 'stderr',
})
} catch (err) {
this.logger.error(err)
}
}
return true
}
}

public unbind() {
process.stdout.write = this.originalStdoutWrite
process.stderr.write = this.originalStderrWrite
}
}

export default ConsoleLogger
Я также использую Winston для записи журналов консоли в файл. Я настроил регистратор следующим образом.

Код: Выделить всё

import { createLogger, format, transports } from 'winston'
import ProjectConfiguration from '../projectConfiguration'

const { combine, timestamp } = format

const TestLoggerFactory = () => {
const logger = createLogger({
format: combine(timestamp(), format.json()),
transports: [
new transports.File({
filename: ProjectConfiguration.getLogFilePath(), // Specify log file location
options: { flags: 'w' },
}),
],
})
return logger
}
export default TestLoggerFactory
  • Код регистратора отлично работает в системе Windows, но не в Linux и MacO.
  • В Linux и MacOS журналы печатается на консоли, а не в файле.
  • В Linux и MacOS журналы ошибок сохраняются в файле. Проблема касается стандартных исходящих журналов.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -and-macos
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»