← Files LanguaARCHIVED FILE

test-cases.md

5.97 KB · Nov 3, 2026 · 19:11 UTC

↓ Download file

See the change to this file →

# Review test cases

The same cases are in `plugin.json` under `extensions.com.openai.review.test_cases`,
which is what the submission portal imports. This file is the readable copy, with
the tool arguments and the evidence.

Re-run the five positive cases against any deployment:

```bash
npx tsx scripts/verify-submission-cases.ts https://chatgpt.languatalk.com/mcp
```

Every line must print `ok`. The script also turns each card back into a claim
link the same way the card's button does, so a card that cannot be opened fails
the run.

## What the reviewer needs

The three model-facing tools are read-only and need no sign-in: the reviewer
gets a card from a cold start. A Langua account is needed only to press the
card's button and open the activity. See `README.md` for the test-account gap.

## Positive cases

### P1. Save phrases the learner supplies as a review deck

- **Scenario:** The learner lists phrases they want to keep and asks to review them later.
- **Prompt:** `I'm going to Lisbon next month. Save these Portuguese phrases so I can review them: 'Uma mesa para dois, por favor', 'Pode trazer a ementa?', 'A conta, por favor'.`
- **Expected tools:** `build_phrase_deck`
- **Arguments the model should send:** `language: portuguese`, `native_language: english`, `dialect: pt-PT`, a short `title` naming the topic, and the three phrases as `items` with English on the back.
- **Expected result:** A deck card titled for the topic, holding 3 flip cards and a self-test. Buttons: "Add to Langua vocabulary", then "Practise out loud". The chat text names the deck and the item count and writes no link.

### P2. Start a guided beginner lesson in a new language

- **Scenario:** A complete beginner wants structured lessons that remember their progress.
- **Prompt:** `I'm a complete beginner in Italian and I want to start with structured lessons that remember my progress. Teach me to introduce myself.`
- **Expected tools:** `start_beginner_lesson`
- **Arguments:** `language: italian`, `native_language: english`, `topic: introduce myself`
- **Expected result:** A lesson card naming the matched introductions lesson, its goal, and up to 4 preview phrases. Button: "Start lesson in Langua". Verified run matched `Introductions & checking understanding` with 4 phrases.

### P3. Rehearse a real situation that matches a Langua roleplay

- **Scenario:** An intermediate learner wants to rehearse a specific conversation out loud.
- **Prompt:** `I'm B1 in German and I have a job interview for a product designer role in Berlin. I want to practise speaking it out loud with feedback.`
- **Expected tools:** `plan_speaking_practice`
- **Arguments:** `language: german`, `level: B1`, `scenario` describing the interview, plus `role` and `goal`.
- **Expected result:** A scenario card with `status: ready`, the matched Langua roleplay, the role, the goal, level B1 and the voice. Button: "Practise out loud in Langua". Verified run matched the roleplay `Attending a job interview`.

### P4. Rehearse a situation with no catalog match

- **Scenario:** No Langua roleplay covers asking for a pay rise, so it becomes a custom conversation.
- **Prompt:** `In Portuguese, I want to practise asking my manager in Lisbon for a pay rise. Include 'gostaria de rever o meu salário'. I'm B2.`
- **Expected tools:** `plan_speaking_practice`
- **Arguments:** `language: portuguese`, `dialect: pt-PT`, `level: B2`, the scenario, and the learner's phrase in `key_phrases`.
- **Expected result:** A scenario card with `activity.type: custom_conversation`, carrying the learner's phrase. Button: "Practise out loud in Langua".

### P5. Send a beginner to a lesson instead of a roleplay

- **Scenario:** A beginner asks for something too hard for their level.
- **Prompt:** `I just started Korean last week and know almost nothing. Can I do a roleplay at a restaurant?`
- **Expected tools:** `start_beginner_lesson`, sometimes after `plan_speaking_practice`
- **Expected result:** A Korean beginner lesson card. In real ChatGPT on 2026-10-22 the model called `start_beginner_lesson` directly in 2 of 3 runs. When it calls `plan_speaking_practice` first, that returns `status: beginner_lesson_recommended` and names `start_beginner_lesson` with the arguments to reuse. The model then calls it and a beginner lesson card appears. The learner is never left without a next step.

## Negative cases

Each one is refused by the guardrail sentence carried in all three tool
descriptions: *"Do not use for translation, grammar explanations, non-language
flashcards (for example biology or history facts), or checking or correcting
the learner's own writing (emails, cover letters, essays, sentences)."*

### N1. Translation request

- **Prompt:** `Translate this paragraph of my email into Spanish for me.`
- **Why the plugin must not act:** Langua prepares practice activities. It is not a translator, and a deck of someone's email text is not a practice activity.
- **Expected behavior:** No Langua tool is called. ChatGPT answers directly, or offers to save phrases the learner wants to practise instead.

### N2. Flashcards for a non-language subject

- **Prompt:** `Make me flashcards for the stages of mitosis for my biology exam.`
- **Why the plugin must not act:** `build_phrase_deck` stores target-language words and phrases for spoken language practice. Biology terms are not foreign-language material, and the deck would go into a language learner's vocabulary review.
- **Expected behavior:** No Langua tool is called. ChatGPT makes the flashcards itself or explains that Langua covers language learning only.

### N3. Correcting the learner's own writing

- **Prompt:** `Here is my French cover letter. Check it and fix my grammar mistakes.`
- **Why the plugin must not act:** Langua's tools prepare speaking and review activities. They do not proofread, and sending a cover letter would hand over personal content the task does not need.
- **Expected behavior:** No Langua tool is called. ChatGPT corrects the letter itself, and may offer to build a deck of phrases the learner wants to practise saying.

SHA-256: 066d22745f53a6ebef25d8de8195cd6ec7b90247c2c8d950d76b2fe8e1564b63