Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions .github/ISSUE_TEMPLATE/qa-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: QA Test Report
description: Report results from manual QA testing
title: "QA: [browser] [version] β€” [summary]"
labels: ["qa", "testing"]
body:
- type: markdown
attributes:
value: |
Thanks for testing SkillBridge! Fill out the checklist below.
See [TESTING.md](../../TESTING.md#manual-qa-checklist) for details.

- type: input
id: browser
attributes:
label: Browser & Version
placeholder: "Chrome 124 / Firefox 128 / Edge 124"
validations:
required: true

- type: input
id: extension-version
attributes:
label: Extension Version
placeholder: "2.0.0"
validations:
required: true

- type: input
id: os
attributes:
label: OS
placeholder: "macOS 15.2 / Windows 11 / Ubuntu 24.04"
validations:
required: true

- type: input
id: language
attributes:
label: Language Tested
placeholder: "ko / ja / zh-CN / es / fr / de / other"
validations:
required: true

- type: checkboxes
id: core-translation
attributes:
label: Core Translation
options:
- label: Page translates after selecting language
- label: Progress bar appears and completes
- label: Switch to English restores original text
- label: Protected terms stay in English
- label: Navigation triggers auto-translate
- label: Cached translations load instantly on refresh

- type: checkboxes
id: ai-tutor
attributes:
label: AI Tutor
options:
- label: Sidebar opens via floating button
- label: Streaming response renders correctly
- label: Markdown formatting works (bold, lists, code)
- label: Text selection "Ask Tutor" works
- label: Chat history loads and displays

- type: checkboxes
id: keyboard-shortcuts
attributes:
label: Keyboard Shortcuts
options:
- label: "Ctrl+Shift+S toggles sidebar"
- label: "Ctrl+Shift+L toggles dark mode"
- label: "Ctrl+Shift+/ shows help overlay"
- label: "Escape closes overlay/sidebar"
- label: "/ focuses chat input (sidebar open)"

- type: checkboxes
id: exam-mode
attributes:
label: Exam Mode
options:
- label: Exam banner appears on quiz pages
- label: Answer choices are NOT translated
- label: AI Tutor shows integrity warning
- label: AI Tutor refuses direct exam answers

- type: checkboxes
id: dark-mode
attributes:
label: Dark Mode
options:
- label: Full dark theme applies correctly
- label: Dark mode persists after refresh
- label: All UI elements styled (banner, overlay, sidebar)

- type: checkboxes
id: youtube
attributes:
label: YouTube Subtitles
options:
- label: Translated subtitles auto-activate on video play
- label: Subtitle language matches selected language

- type: textarea
id: issues
attributes:
label: Issues Found
description: Describe any bugs, visual glitches, or unexpected behavior.
placeholder: |
1. [Feature] β€” Description of issue
2. [Feature] β€” Description of issue

- type: textarea
id: screenshots
attributes:
label: Screenshots (optional)
description: Paste screenshots of any issues found.
33 changes: 33 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,44 @@

## Testing

- [ ] `npm test` passes
- [ ] Tested on anthropic.skilljar.com
- [ ] Extension loads without errors
- [ ] No console errors in DevTools
- [ ] Tested in target language (if i18n change)

### QA Checklist (check items affected by your changes)

<details>
<summary>Expand checklist</summary>

**Core Translation**
- [ ] Page translates after selecting language
- [ ] Switch to English restores original
- [ ] Protected terms stay in English

**AI Tutor**
- [ ] Sidebar opens, streaming response works
- [ ] Text selection "Ask Tutor" works

**Keyboard Shortcuts**
- [ ] Ctrl+Shift+S/L/? all work
- [ ] No interference with text input fields

**Exam Mode**
- [ ] Answer choices NOT translated on quiz pages
- [ ] AI Tutor shows integrity warning

**Dark Mode**
- [ ] Theme applies to all UI elements

**Cross-Browser** (if touching manifest/polyfill/background)
- [ ] Chrome: works
- [ ] Firefox: `npm run build:firefox` β†’ loads without errors
- [ ] Edge: works

</details>

## Screenshots (if UI change)

<!-- Paste before/after screenshots here -->
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ git clone https://github.com/heznpc/skillbridge.git

Also works in Brave, Arc, Opera, Vivaldi, and other Chromium-based browsers.

### Firefox
### Firefox (Beta)

```bash
git clone https://github.com/heznpc/skillbridge.git
Expand Down
107 changes: 106 additions & 1 deletion TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ This guide covers how to run tests, debug the extension, and troubleshoot common

```bash
npm install # first time only
npm test # runs all ~700 Jest tests
npm test # runs all Jest tests
```

### Single test file
Expand Down Expand Up @@ -68,6 +68,7 @@ tests/protected-terms.test.js β†’ re-implements logic (legacy pattern)
| `protected-terms.test.js` | ~50 | Protected term map building, term replacement, per-language dictionaries |
| `constants.test.js` | ~20 | Value validation, threshold ranges, language list integrity, i18n label coverage |
| `format-response.test.js` | ~18 | Markdown-to-HTML conversion, XSS escaping, heading/list/inline formatting |
| `glossary-checker.test.js` | ~10 | Cross-language glossary consistency, protected terms validation |

### What is NOT tested (known gaps)

Expand Down Expand Up @@ -281,3 +282,107 @@ The CI workflow (`.github/workflows/ci.yml`) runs on every push to `main` and on
3. **Test** β€” runs all Jest tests

The CD workflow (`.github/workflows/cd.yml`) triggers on push to `main` when `src/**`, `_locales/**`, or `manifest.json` change β€” it builds a zip and uploads to Chrome Web Store.

---

## Manual QA Checklist

Use this checklist before releases or when reviewing PRs that touch core functionality. Copy into your PR description and check off items as you verify them.

### Core Translation

- [ ] Visit `anthropic.skilljar.com` β†’ select a non-English language β†’ page translates
- [ ] Progress bar appears and completes
- [ ] Switch back to English β†’ original text restores correctly
- [ ] Protected terms (Claude, Anthropic, API, SDK) remain in English after translation
- [ ] Navigate to a different lesson β†’ auto-translate triggers if enabled
- [ ] Refresh page β†’ cached translations load instantly (check Network tab β€” no GT calls for cached text)

### AI Tutor

- [ ] Click floating button β†’ sidebar opens
- [ ] Type a question β†’ streaming response appears
- [ ] Response renders markdown (bold, lists, code blocks) correctly
- [ ] Select text on page β†’ "Ask Tutor" button appears β†’ clicking sends quoted text to chat
- [ ] Chat history: click clock icon β†’ history panel shows past conversations
- [ ] Close and reopen sidebar β†’ chat state preserved

### Keyboard Shortcuts

- [ ] `Ctrl+Shift+S` (or `Cmd+Shift+S` on Mac) β†’ toggles sidebar
- [ ] `Ctrl+Shift+L` β†’ toggles dark mode
- [ ] `Ctrl+Shift+/` β†’ shows shortcut help overlay
- [ ] `Escape` β†’ closes help overlay or sidebar
- [ ] `/` (with sidebar open, not in input field) β†’ focuses chat input
- [ ] Shortcuts do NOT fire when typing in textarea/input fields

### Exam Mode

- [ ] Navigate to a quiz/assessment page β†’ exam banner appears at top
- [ ] Answer choices (radio/checkbox labels) are NOT translated
- [ ] Question text and page headings ARE translated
- [ ] AI Tutor shows integrity warning before sending message on exam page
- [ ] AI Tutor refuses to provide direct exam answers

### Dark Mode

- [ ] Toggle dark mode β†’ entire page goes dark (header, content, sidebar, footer)
- [ ] Refresh page β†’ dark mode persists
- [ ] Exam banner renders correctly in dark mode
- [ ] Shortcut help overlay renders correctly in dark mode

### YouTube Subtitles

- [ ] Page with embedded YouTube video β†’ play video β†’ translated subtitles activate
- [ ] Subtitle language matches selected translation language

### Cross-Browser (Beta)

- [ ] **Chrome**: load unpacked β†’ all features work
- [ ] **Firefox**: `npm run build:firefox` β†’ load temporary add-on from `dist/firefox/` β†’ extension loads without errors
- [ ] **Firefox**: basic translation works (select language, page translates)
- [ ] **Edge**: load unpacked β†’ all features work

### Security Spot-Check

- [ ] Open DevTools Console β†’ no errors containing `[SkillBridge]`
- [ ] Network tab β†’ no requests to unexpected domains (only `translate.googleapis.com`, `youtube.com`, `puter.com`)
- [ ] Application tab β†’ IndexedDB β†’ `skillbridge-cache` entries have timestamps (TTL working)

---

## Firefox Testing Guide (Beta)

Firefox support is currently in **beta**. Use this guide to test.

### Setup

```bash
npm run build:firefox # generates dist/firefox/
```

### Load in Firefox

1. Open `about:debugging#/runtime/this-firefox`
2. Click **Load Temporary Add-on**
3. Navigate to `dist/firefox/manifest.json`

> Temporary add-ons are removed when Firefox restarts.

### What to Test

| Feature | Expected | Known Issues |
|---------|----------|-------------|
| Page translation | Works (GT + static dict) | None known |
| AI Tutor | Should work (Puter.js) | Untested |
| Dark mode | Should work (CSS-only) | Untested |
| Keyboard shortcuts | Should work | Untested |
| YouTube subtitles | May not work | iframe postMessage differences |
| Exam mode | Should work | Untested |

### Reporting Firefox Issues

File a bug with:
- Firefox version (`about:support` β†’ Application Basics β†’ Version)
- Console errors (F12 β†’ Console β†’ filter `[SkillBridge]`)
- Steps to reproduce
2 changes: 1 addition & 1 deletion docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ <h3>Keyboard Shortcuts</h3>
<div class="feature-card">
<div class="feature-icon">🦊</div>
<h3>Cross-Browser</h3>
<p>Works on Chrome, Firefox, Edge, Brave, Arc, and other Chromium browsers. Firefox build via npm run build:firefox.</p>
<p>Works on Chrome, Edge, Brave, Arc, and other Chromium browsers. Firefox support is in beta β€” run npm run build:firefox to try it.</p>
</div>
</div>
</div>
Expand Down
Loading