번역 키에 대한 스크린샷 생성
10001 단어 translationautomationcypress
이 가이드는 귀하가 Cypress 사용법을 알고 있고 프로젝트에 이미 설정되어 있다고 가정합니다. 번역 키에 대한 스크린샷을 만들기 위해 Cypress를 설치하는 것은 권장하지 않습니다.
tkey 데이터 속성 제공
이 솔루션이 작동하려면 모든 번역 키에 대해
tkey
data attribute을 제공해야 합니다. 이것은 스크린샷이 올바른 파일 이름을 받을 수 있도록 하기 위해 필요합니다.이를 달성하는 방법에는 여러 가지가 있으며 구현은 사용하는 프레임워크에 따라 다릅니다.
내 Svelte 코드의 경우 번역 키를 래핑하는 데 사용하는 구성 요소를 만들었습니다.
<script>
import { format } from "svelte-i18n"
export let key
</script>
<span data-tkey={key}>
{$format(key)}
</span>
이렇게 하면 수동으로 지정할 필요가 없습니다. 모든 번역 키에 대해 암시적입니다.
스크린샷 만들기
Cypress로 스크린샷을 만드는 것은 쉽습니다.
cy.screenshot(fileName)
그러나 각 번역 키에 대해 올바른 파일 이름으로 별도의 파일을 만들어야 합니다.
cy.get('[data-tkey]').each($el => {
const tkey = $el.data('tkey')
console.log(`📸 Creating screenshots for ${tkey}}`)
cy.screenshot(`__tkey-${tkey}`)
})
이미 시각적 회귀 테스트에 Cypress를 사용하고 있으므로 이미 스크린샷을 생성한 곳에 이 코드를 넣습니다. 시각적 회귀 테스트를 사용하지 않는 경우 다른 옵션이 있습니다. the
window:load
event.에서 이 코드를 실행하는 것을 고려할 수 있습니다.Cypress 테스트를 실행한 후 이미 스크린샷을 확인했습니다.
문제는 페이지에 다양한 번역 키가 포함될 수 있다는 것입니다. 이 방법을 사용하면 각 번역 키가 동일한 페이지에 있는 경우 동일한 스크린샷을 갖게 됩니다. 특정 번역 키를 찾기 어려울 수 있기 때문에 이상적이지 않습니다.
스크린샷에 번역 요약
번역가의 관심을 유도하는 좋은 방법은 스크린샷의 관련 부분을 표시하는 것입니다.
관련 DOM 노드 주위에 빨간색 사각형을 그리기로 했습니다. 다행스럽게도 뷰포트에 상대적인 DOM 노드의 위치와 크기를 찾는 것은 매우 쉽습니다.
$el[0].getBoundingClientRect()
이를 사용하여 페이지에서 특정 DOM 요소를 강조 표시하는 함수를 만들 수 있습니다.
const createRectangle = ({ left, top, width, height }) => {
const rectangle = document.createElement("div");
rectangle.setAttribute(
"style",
`position: fixed;
left: ${left - 5}px;
top: ${top - 5}px;
width: ${width + 15}px;
height: ${height + 15}px;
border: 3px dashed red;
z-index: 1000000;`
);
return rectangle;
};
const createElementHighlighter = (element) => {
return createRectangle(element.getBoundingClientRect());
};
이 기능을 사용하여 스크린샷을 찍기 전에 각 요소를 강조 표시할 수 있습니다.
cy.get("[data-tkey]").each(($el) => {
const tkey = $el.data("tkey");
const highlighter = createElementHighlighter($el[0]);
cy.window().then((win) => {
win.document.body.appendChild(highlighter);
});
console.log(`📸 Creating screenshots for ${tkey}}`);
cy.screenshot(`__tkey-${tkey}`);
cy.window().then((win) => {
win.document.body.removeChild(highlighter);
});
});
지금 테스트를 실행하면 요소가 올바르게 표시되는 것을 볼 수 있습니다 🎉. 예:
단점
이 접근 방식에는 몇 가지 제한 사항과 단점이 있습니다. 몇 가지 예를 들자면:
Reference
이 문제에 관하여(번역 키에 대한 스크린샷 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kantord/generate-screenshots-for-your-translation-keys-1f1n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)