Skip to content

feat(ui5): Add QUnit best-practices skill#80

Open
plamenivanov91 wants to merge 2 commits into
UI5:mainfrom
plamenivanov91:qunit-skill
Open

feat(ui5): Add QUnit best-practices skill#80
plamenivanov91 wants to merge 2 commits into
UI5:mainfrom
plamenivanov91:qunit-skill

Conversation

@plamenivanov91

Copy link
Copy Markdown

Adds the ui5-best-practices-qunit skill covering coding standards for OpenUI5/SAPUI5 unit test files. Follows the same structure as the OPA5 skill: a lean SKILL.md router plus three focused reference files loaded on demand by task type (writing new tests, modernizing existing ones, async patterns).

  • SKILL.md: trigger description with literal user phrases, core rules table, quick-reference checklist
  • references/writing-new-tests.md: module structure, AAA pattern, test naming, helpers, file setup (/*global QUnit */, sap.ui.define imports)
  • references/modernizing-tests.md: var/const/let, bind, assert.async, Core.applyChanges, sinon sandbox, assert.expect, import cleanup, encoding fix, what-not-to-change guard table
  • references/async-patterns.md: nextUIUpdate vs Core.applyChanges decision table (incl. fake-timer exceptions), waitForEvent, waitForRendering via addEventDelegate, when not to convert assert.async
  • README.md: adds ui5-best-practices-qunit section
  • plugin.json / .github/plugin/plugin.json: adds "qunit" keyword
  • All files ISO 8859-1 compliant (no em dashes or non-ASCII)

JIRA: BGSOFUIPIRIN-7067

@d3xter666 d3xter666 requested review from a team and flovogt June 23, 2026 14:33
Comment thread plugins/ui5/README.md

@flovogt flovogt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codeworrior Could you have a look at this QUnit best practices, please?

@codeworrior codeworrior left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, but IMO, there are still a few things to be clarified / added.

Comment thread plugins/ui5/skills/ui5-best-practices-qunit/references/async-patterns.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/references/modernizing-tests.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/references/modernizing-tests.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/references/modernizing-tests.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/references/writing-new-tests.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/references/writing-new-tests.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/SKILL.md Outdated
Comment thread plugins/ui5/skills/ui5-best-practices-qunit/SKILL.md
Adds the ui5-best-practices-qunit skill covering coding standards for
OpenUI5/SAPUI5 unit test files. Follows the same structure as the OPA5
skill: a lean SKILL.md router plus three focused reference files loaded
on demand by task type (writing new tests, modernizing existing ones,
async patterns).

- SKILL.md: trigger description with literal user phrases, core rules
  table, quick-reference checklist
- references/writing-new-tests.md: module structure, AAA pattern, test
  naming, helpers, file setup (/*global QUnit */, sap.ui.define imports)
- references/modernizing-tests.md: var/const/let, bind, assert.async,
  Core.applyChanges, sinon sandbox, assert.expect, import cleanup,
  encoding fix, what-not-to-change guard table
- references/async-patterns.md: nextUIUpdate vs Core.applyChanges
  decision table (incl. fake-timer exceptions), waitForEvent,
  waitForRendering via addEventDelegate, when not to convert assert.async
- README.md: adds ui5-best-practices-qunit section
- plugin.json / .github/plugin/plugin.json: adds "qunit" keyword
- All files ISO 8859-1 compliant (no em dashes or non-ASCII)

JIRA: BGSOFUIPIRIN-7067
…curacies

PR review feedback (flovogt, codeworrior):
- README: sort skills alphabetically (qunit after opa5)
- async-patterns: promote nextUIUpdate(clock) as the mainstream fake-timer
  approach (not a limited caveat); add nextUIUpdate.runSync() for sync helpers;
  replace "note in commit message" with per-occurrence inline comment guidance;
  fix import path to sap/ui/test/utils/nextUIUpdate; note deprecated
  sap/ui/qunit/utils/nextUIUpdate re-export (since 1.127); add legacy-free UI5
  warning; remove misleading placeAt() exception row
- modernizing-tests: expand §5 with bridge-vs-sandbox consistency rule and
  verifyAndRestore guidance; expand §7 to cover non-standard Core param names
  and sap.ui.getCore() distinction; soften §8 encoding wording from
  "must be ISO 8859-1" to "avoid non-ASCII"; update grep patterns to reflect
  real project layouts; add §9 QUnit 1 -> QUnit 2 globals migration
- writing-new-tests: add sinon bridge-vs-dependency consistency guidance,
  CPOUI5FOUNDATION-1204 note, fix grep path patterns
- SKILL.md: add QUnit 1 migration trigger, update sinon sandbox/bridge rule,
  fix fake-timer checklist item, soften encoding wording throughout
@plamenivanov91

plamenivanov91 commented Jul 1, 2026

Copy link
Copy Markdown
Author

Here is the original qUnit improvement pilot change 6566798 (Gerrit ID).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants