Cypress позволяет работать с чувствительными данными через переменные окружения, избегая их прямого хранения в коде. Основные способы управления переменными:
cypress.env.json. Позволяет
хранить ключи и пароли отдельно от тестов. Структура файла:{
"API_KEY": "ваш_секретный_ключ",
"USER_EMAIL": "user@example.com"
}
CYPRESS_API_KEY=секретный_ключ npx cypress run
cypress.config.js с разделом
env:import { defineConfig } from 'cypress'
export default defineConfig({
env: {
API_KEY: process.env.API_KEY
}
})
Использование в тестах:
cy.get('@apiKey').then(() => {
const apiKey = Cypress.env('API_KEY')
})
Важно: переменные окружения в
cypress.env.json не должны попадать в систему контроля
версий.
Для тестирования с конфиденциальной информацией применяются изолированные тестовые учетные записи. Практики безопасности включают:
dev,
staging, prod), чтобы минимизировать риск
утечки.Cypress позволяет управлять заголовками HTTP и куками, что важно для тестирования приложений с авторизацией:
cy.request({
method: 'POST',
url: '/login',
headers: {
'Authorization': `Bearer ${Cypress.env('API_KEY')}`
},
body: {
email: Cypress.env('USER_EMAIL'),
password: Cypress.env('USER_PASSWORD')
}
})
Для куки:
cy.setCookie('session_id', 'секретное_значение')
cy.getCookie('session_id').should('exist')
Рекомендация: очищать куки и локальное хранилище
после каждого теста через хуки afterEach, чтобы
предотвратить утечку состояния между тестами.
Cypress может запускаться на любой среде, включая production, что опасно. Для защиты:
beforeEach(() => {
if (Cypress.config('baseUrl').includes('production')) {
throw new Error('Тесты не могут запускаться на продакшн-среде')
}
})
При работе с API-ключами и токенами лучше использовать шифрование:
Для безопасного тестирования важно вести аудит:
console.log(Cypress.env('API_KEY')) запрещено).Cypress позволяет перехватывать и ограничивать HTTP-запросы:
cy.intercept('POST', '/api/private', { statusCode: 403 }).as('blockedRequest')
Это предотвращает случайную отправку конфиденциальных данных в небезопасные среды.
При запуске тестов в CI/CD системах:
Для интеграционных тестов необходимо всегда использовать безопасные протоколы:
baseUrl приложения должен быть по
https.chromeWebSecurity: false
Эти меры обеспечивают целостность тестов и защиту конфиденциальной информации при автоматизации с Cypress.