플러그인(자동) 테스트에 관한 이 토론을 찾았지만, 테마나 테마 컴포넌트를 테스트하는 방법에 대한 언급은 아직 찾지 못했습니다. 테마에 QUnit (또는 유사한 도구)을 사용하는 방법에 대한 예시가 있을까요?
사용자가 선택할 수 있는 테마에 추가하거나, 테마 관리 페이지의 테스트 링크를 사용할 수 있습니다.
죄송합니다, 자동화 테스트를 말씀드린 것이었습니다. 이전 게시물을 수정하겠습니다. 일부 플러그인이 이미 사용하고 있는 QUnit 같은 것을 생각하고 있었습니다.
아니요, 현재 테마/컴포넌트에 QUnit 테스트를 추가하는 것은 불가능합니다…
@david 플러그인처럼 /test 폴더에 대한 지원을 추가하는 것이 얼마나 가능할까요? 테스트가 실행될 때 테마도 활성화해야 하는데, 코어 테스트는 테마 없이 실행되죠, 맞나요?
가능성은 충분히 있지만, 몇 가지 작업이 필요합니다. 현재 모든 테마의 JavaScript 파일은 하나의 파일로 번들링되어 있습니다. 따라서 일반 방문자에게 제공되지 않도록 테스트를 별도의 새 번들로 분리해야 합니다. 그 작업을 완료한 후에는 단일 테마에 대해 qunit 테스트를 실행할 수 있는 방법을 마련해야 합니다.
또 다른 고려 사항은 /qunit 라우트를 프로덕션 서버에서 사용 가능하게 하지 않는다는 점입니다. 테마가 프로덕션 서버에서 개발되는 경우가 많으므로, 이 부분을 재검토해야 할 것 같습니다. ![]()
개인적으로 테마 컴포넌트의 가장 큰 단점 중 하나가 바로 이겁니다. 배포가 매우 쉬워서 좋은 점이지만, 테스트가 종종 뒷전으로 밀리곤 하거든요.
제가 이해한 바로는, 테마 컴포넌트로 할 수 있는 모든 작업은 플러그인으로도 수행할 수 있습니다. 전자는 배포가 더 쉬운 반면, 후자는 테스트가 가능합니다.
네, 대체로 정확한 말씀입니다. 결국 커스터마이징 대상에 따라 트레이드오프가 발생하게 됩니다. 예를 들어 커스텀 스타일시트를 추가하는 경우, 플러그인 환경에서도 테스트가 불가능할 수 있습니다. 커스텀 자바스크립트 컨트롤과 위젯을 추가하는 부분이 바로 의문점이 생기는 지점입니다.
ember cli 작업을 진행할 때 이 문제를 고려해야 한다고 생각합니다. 테마를 위한某种 테스트 러너를 갖는 것은 불가능한 일이 아니며, discourse-theme gem을 통해 ember cli를 이용한 로컬 테스트 설정에 필요한 기본 기능의 일부를 제공할 수 있습니다.
테마 테스트를 실행하려면 Discourse 전체 설치가 필요할 것 같은데, 맞나요? 상호 의존성이 너무 많아 테마를 독립적으로 테스트하는 것은 불가능하다고 생각합니다. ![]()
아니면 theme-cli에 discourse_dev 도커 이미지를 가져와서 그 안에서 qunit 테스트를 실행하는 로직을 포함할 수 있을까요?
ember cli의 핵심 아이디어는 서버와 클라이언트를 명확하게 분리하는 것입니다. Rails 서버를 실행하지 않고도 클라이언트를 테스트할 수 있도록 JS 쪽의 필요한 부분만 제공할 수 있습니다. 당연히 node와 ember cli는 설치해야 하지만, Redis와 Postgres를 포함한 Discourse 전체 스택을 설치하지 않아도 될 수 있습니다.
조금 까다로울 수 있지만, 분명히 염두에 둘 수 있는 부분입니다.
이제 테마 내 테스트를 지원합니다(늦은 업데이트, 테마 테스트 지원은 2021년 중반에 추가됨). 로컬 환경이나 프로덕션 사이트에서 /theme-qunit 경로로 이동하면, 테스트가 포함된 설치된 테마/컴포넌트가 나열됩니다. 예시로 Discourse Tab Bar for Mobile 또는 태그 아이콘 컴포넌트를 참고하세요.
정말 좋습니다. 플러그인에서 자바스크립트를 테스트하는 기능으로도 확장될 예정인가요?
프로덕션 환경에서 테스트를 실행할 수 있다는 말씀이신가요? 현재로서는 테마에 한해 가능합니다.
(로컬에서는 플러그인 JS 테스트를 실행할 수 있습니다.)
테마와 플러그인 JS 모두에서 현재 스펙과 마찬가지로 GitHub의 CI에서 실행할 수 있도록 하는 것이 목표라고 생각합니다.
네, 모든 공식 플러그인에 대해 CI에서 테스트를 실행합니다.