E2E테스트를 진행하는 도중에 위와 같이 browser의 권한 요청을 묻는 경우가 있어서 E2E테스트가 멈추는 상황이 발생하였습니다.
해결 방법은 다음과 같습니다.
yarn add cypress-browser-permissions -D
그리고 cypress/plugins/index.js에 아래와 같이 코드를 넣어줍니다.
const { cypressBrowserPermissionsPlugin } = require('cypress-browser-permissions')
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
config = cypressBrowserPermissionsPlugin(on, config);
return config;
};
이제 우리는 Chrome, Edge, Firefox에서 Cypress 환경 변수로 권한에 접근할 수 있습니다. 여러분의 프로젝트에 권한을 주고 싶은 것을 골라서 cypress.json파일에 아래와 같이 추가하면 됩니다.
{
"env": {
"browserPermissions": {
"notifications": "allow",
"geolocation": "allow",
"camera": "block",
"microphone": "block",
"images": "allow",
"javascript": "allow",
"popups": "ask",
"plugins": "ask",
"cookies": "allow"
}
}
}
그후 테스트코드를 아래처럼 작성해 주면 됩니다.
/// <reference types="Cypress"/>
import { isPermissionAllowed } from 'cypress-browser-permissions';
context('유저는 숙소를 등록할 수 있다.', () => {
it('숙소의 위치를 설정하고 다음 페이지로 넘어갈 수 있다.', () => {
expect(isPermissionAllowed('geolocation')).to.be.true;
cy.contains('현재 위치 사용').click();
});
});
아래와 같이 Cypress가 브라우저의 권한을 허용했고, 위치를 불러올 수 있었습니다.
'개발이야기' 카테고리의 다른 글
Agile Development Principle (0) | 2022.05.17 |
---|---|
Component Driven Development (CDD) (0) | 2022.05.13 |
qwzd에 eslint, prettier 적용하기 (0) | 2022.05.12 |
Next.js PWA 찍먹 (0) | 2022.04.26 |
방슐랭가이드에 핸드폰 인증 구현하기 (0) | 2022.04.17 |