# 플러그인과 테마에 새로운 핵심 기능 시스템 사양

**URL:** https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381
**Category:** Development
**Tags:** dev-news
**Created:** [4월 11, 2025, 8:43오전 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381 "2025-04-11T08:43:29Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![loic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/loic/32/105621_2.png) [@loic](https://meta.discourse.org/u/loic)
#### Post date: [4월 11, 2025, 8:43오전 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381/1 "2025-04-11T08:43:29Z")

</div>

현재 [플러그인](https://github.com/discourse/discourse-plugin-skeleton/blob/main/spec/system/core_features_spec.rb)과 [테마](https://github.com/discourse/discourse-theme-skeleton/blob/main/spec/system/core_features_spec.rb)의 두 가지 스켈레톤 모두에 우리가 ‘스모크 스펙(smoke specs)’ 또는 '핵심 기능 스펙(core features specs)'이라 부르는 내용을 추가했습니다.

이 스펙들은 작업 중인 플러그인이나 테마가 Discourse의 기본 기능을 깨뜨리지 않도록 보장합니다.

기존 플러그인이나 테마에 이 스펙을 추가하는 것은 매우 쉽습니다:

_플러그인용_

```rb
# spec/system/core_features_spec.rb

RSpec.describe "Core features", type: :system do
  before { enable_current_plugin }

  it_behaves_like "having working core features"
end

```

_테마용_

```rb
# spec/system/core_features_spec.rb

RSpec.describe "Core features", type: :system do
  before { upload_theme_or_component }

  it_behaves_like "having working core features"
end

```

여러 저장소를 한 번에 업데이트해야 하는 경우, [`mass-pr` 도구를 위한 스크립트](https://github.com/discourse/mass-pr/blob/main/scripts/add-core-features-specs.sh)를 사용할 수 있습니다.

작업 중인 플러그인이나 테마가 의도적으로 Discourse의 기본 기능을 변경하는 경우, 핵심 기능 스펙의 일부 예제를 건너뛸 수 있습니다:

```rb
it_behaves_like "having working core features", skip_examples: %i[login likes]

```

예제를 건너뛰기 위한 전체 키워드 목록은 다음과 같습니다:

- login
- likes
- profile
- topics
- topics:read
- topics:reply
- topics:create
- search
- search:quick\_search
- search:full\_page

---

<div class="post-metadata">

### Author: ![gormus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gormus/32/428592_2.png) [@gormus](https://meta.discourse.org/u/gormus)
#### Post date: [5월 21, 2025, 1:51오후 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381/2 "2025-05-21T13:51:40Z")

</div>

> [@loic](#):
>
> 작업 중인 플러그인이나 테마가 의도적으로 Discourse의 기본 기능을 변경하는 경우, 핵심 기능 스펙의 일부 예제를 건너뛸 수 있습니다:
> 
> ```plaintext
> it_behaves_like "having working core features", skip_examples: %i[login likes]
> 
> ```
> 
> 예제를 건너뛰기 위한 전체 키워드 목록은 다음과 같습니다:
> 
> - login
> - likes
> - profile
> - topics
> - topics:read
> - topics:reply
> - topics:create
> - search
> - search:quick\_search
> - search:full\_page

개인적으로, 이 세부 사항을 아래 위치에 포함하는 것이 매우 유용하고 도움이 될 것 같습니다.

> <https://github.com/discourse/discourse-plugin-skeleton/blob/main/spec/system/core_features_spec.rb#L1-L7>

그리고

> <https://github.com/discourse/discourse-theme-skeleton/blob/cf50046612c2ea26909a350cea5b37321964816e/spec/system/core_features_spec.rb#L1-L7>

… 또는 이 토픽의 링크를 포함하는 것도 좋습니다 🙂

---

<div class="post-metadata">

### Author: ![loic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/loic/32/105621_2.png) [@loic](https://meta.discourse.org/u/loic)
#### Post date: [5월 22, 2025, 4:00오후 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381/3 "2025-05-22T16:00:17Z")

</div>

좋은 아이디어네요. [DEV: Add short explanations for the core features specs - Pull Request #52%EC%99%80 - discourse/discourse-theme-skeleton - GitHub](https://github.com/discourse/discourse-theme-skeleton/pull/52%EC%99%80) [DEV: Add short explanations for the core features specs - Pull Request #78%EC%97%90%EC%84%9C - discourse/discourse-plugin-skeleton - GitHub](https://github.com/discourse/discourse-plugin-skeleton/pull/78%EC%97%90%EC%84%9C) 이미 적용된 적이 있습니다 😁

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [5월 23, 2025, 7:20오후 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381/4 "2025-05-23T19:20:30Z")

</div>

테마에 다른 `Theme authorized extensions`가 필요한 경우, 테마를 로드할 수 없어 모든 테스트가 실패합니다.

---

<div class="post-metadata">

### Author: ![gormus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gormus/32/428592_2.png) [@gormus](https://meta.discourse.org/u/gormus)
#### Post date: [8월 1, 2026, 7:15오전 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381/5 "2026-08-01T07:15:18Z")

</div>

최근 이 문제를 우연히 발견했습니다. 필요한 확장 기능이 어떻게 설정되는지 아래에 공유합니다:

```diff
RSpec.describe "Core features" do
+ SiteSetting.theme_authorized_extensions = "js|css"
  before { upload_theme_or_component }

  it_behaves_like "having working core features"
end

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [8월 1, 2026, 4:30오후 UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381/6 "2026-08-01T16:30:31Z")

</div>

그건 어렵지 않아요. 내가 어떤 테마로 작업 중이었는지, 아니면 문제를 해결했는지가 궁금하네요! 🤷
