mjolnir-qa 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -2
- package/README.ar.md +3 -3
- package/README.bn.md +3 -3
- package/README.br.md +3 -3
- package/README.bs.md +3 -3
- package/README.da.md +3 -3
- package/README.de.md +3 -3
- package/README.es.md +3 -3
- package/README.fr.md +3 -3
- package/README.gr.md +3 -3
- package/README.he.md +3 -3
- package/README.it.md +3 -3
- package/README.ja.md +3 -3
- package/README.ko.md +3 -3
- package/README.md +66 -41
- package/README.no.md +3 -3
- package/README.pl.md +3 -3
- package/README.ru.md +3 -3
- package/README.th.md +3 -3
- package/README.tr.md +3 -3
- package/README.uk.md +3 -3
- package/README.vi.md +3 -3
- package/README.zh.md +3 -3
- package/README.zht.md +3 -3
- package/dist/cli.d.mts +136 -9
- package/dist/cli.mjs +8577 -21775
- package/dist/mcp/stdio.mjs +342 -152
- package/dist/scan-pipeline-C0ka-RmX.mjs +2 -0
- package/dist/scan-pipeline-D3Yk2cef.mjs +15309 -0
- package/package.json +9 -5
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,18 @@ Rule behavior changes (new rules, FP-rate changes against the corpus,
|
|
|
9
9
|
severity changes) are first-class entries here — rule IDs are immutable
|
|
10
10
|
once shipped, so this file is the record of what changed between versions.
|
|
11
11
|
|
|
12
|
+
## [Unreleased]
|
|
13
|
+
|
|
14
|
+
## [2.0.2] — 2026-09-22
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **NPM executable metadata** — shipped the package-name `mjolnir-qa` bin
|
|
19
|
+
alias alongside `mjolnir` in the packed tarball, so fresh installs and
|
|
20
|
+
`npx mjolnir-qa@latest` resolve the CLI consistently. This intentionally
|
|
21
|
+
keeps the Mjölnir package/CLI identity and does not include the abandoned
|
|
22
|
+
QA Doctor rebrand.
|
|
23
|
+
|
|
12
24
|
## [2.0.0] — 2026-09-17
|
|
13
25
|
|
|
14
26
|
### Fixed
|
|
@@ -19,8 +31,6 @@ once shipped, so this file is the record of what changed between versions.
|
|
|
19
31
|
|
|
20
32
|
- **Version bump** — bumped package version from 1.1.1 to 2.0.0 across all surfaces (package.json, ENGINE_VERSION, smithery.yaml, rule metadata, docs).
|
|
21
33
|
|
|
22
|
-
## [Unreleased]
|
|
23
|
-
|
|
24
34
|
## [1.1.1] — 2026-09-16
|
|
25
35
|
|
|
26
36
|
### Fixed
|
package/README.ar.md
CHANGED
|
@@ -81,7 +81,7 @@ npx mjolnir-qa@latest
|
|
|
81
81
|
فحص حقيقي لـ [`examples/demo-repo`](examples/demo-repo)، وهي مجموعة Playwright صغيرة مع workflow لـ CI. هنا ذهبت نقاطها:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="تفصيل الخصومات في Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="تفصيل الخصومات في Mjölnir: WORTHINESS 80/100 WORTHY، والدرجة حسب الفئة، ومربع الخصومات حسب الخطورة، وقائمة FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>مولَّد بواسطة `npm run docs:hero` من فحص حقيقي ومقفل ضد الانحراف في CI. تقرير `--verbose` الكامل للفحص نفسه هو [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
هذا يقيس **المتانة، لا الصحة**. ينجح `.btn.btn-primary > div:nth-child(2)` اليوم ويظل ينجح إلى أن يلمس أحدٌ الترميز. الدرجة المنخفضة لا تدّعي أبدًا أن الاختبار معطوب، بل فقط أنه يعتمد على ترميز لم يعد أحد بالحفاظ عليه.
|
package/README.bn.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir স্যুট, CI workflow, এবং আপনার কাছে
|
|
|
81
81
|
[`examples/demo-repo`](examples/demo-repo)-এর একটি প্রকৃত স্ক্যান, CI workflow সহ একটি ছোট Playwright স্যুট। এখানেই এর পয়েন্ট গেছে:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir-এর deduction breakdown: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir-এর deduction breakdown: WORTHINESS 80/100 WORTHY, বিভাগ অনুযায়ী স্কোর, severity অনুযায়ী deduction box, এবং একটি FIX THIS FIRST তালিকা" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>`npm run docs:hero` দ্বারা একটি প্রকৃত স্ক্যান থেকে তৈরি এবং CI-তে বিচ্যুতির বিরুদ্ধে লক করা। একই স্ক্যানের সম্পূর্ণ `--verbose` রিপোর্ট হলো [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`)।</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
এটি **resilience পরিমাপ করে, correctness নয়**। `.btn.btn-primary > div:nth-child(2)` আজ পাস করে এবং কেউ markup স্পর্শ না করা পর্যন্ত পাস হতে থাকে। একটি কম স্কোর কখনো দাবি করে না যে টেস্টটি ভাঙা, শুধু বলে যে এটি এমন markup-এর উপর নির্ভরশীল যা রাখার প্রতিশ্রুতি কেউ দেয়নি।
|
package/README.br.md
CHANGED
|
@@ -81,7 +81,7 @@ O Mjölnir lê a suíte, os workflows de CI e, se você tiver, o relatório de u
|
|
|
81
81
|
Um scan real de [`examples/demo-repo`](examples/demo-repo), uma pequena suíte Playwright com um workflow de CI. Foi para cá que os pontos dela foram:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="O detalhamento das deduções do Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="O detalhamento das deduções do Mjölnir: WORTHINESS 80/100 WORTHY, a pontuação por categoria, o quadro de deduções por severidade e uma lista FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Gerado por `npm run docs:hero` a partir de um scan real e travado contra desvios na CI. O relatório `--verbose` completo do mesmo scan é [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Isso mede **resiliência, não correção**. `.btn.btn-primary > div:nth-child(2)` passa hoje e continua passando até alguém mexer no markup. Uma pontuação baixa nunca afirma que o teste está quebrado, só que ele depende de um markup que ninguém prometeu manter.
|
package/README.bs.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir čita skup testova, CI workflowe i, ako ga imate, izvještaj stvarnog p
|
|
|
81
81
|
Stvarno skeniranje [`examples/demo-repo`](examples/demo-repo), malog Playwright skupa testova s CI workflowom. Evo gdje su otišli njegovi bodovi:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirov pregled odbitaka: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirov pregled odbitaka: WORTHINESS 80/100 WORTHY, ocjena po kategoriji, okvir odbitaka po ozbiljnosti i lista FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Generisano naredbom `npm run docs:hero` iz stvarnog skeniranja i zaključano protiv odstupanja u CI-ju. Puni `--verbose` izvještaj istog skeniranja je [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Ovo mjeri **otpornost, a ne ispravnost**. `.btn.btn-primary > div:nth-child(2)` prolazi danas i nastavlja prolaziti dok neko ne dirne markup. Niska ocjena nikad ne tvrdi da je test pokvaren, samo da zavisi od markupa koji niko nije obećao sačuvati.
|
package/README.da.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir læser testsuiten, CI-workflowene og, hvis du har en, rapporten fra en
|
|
|
81
81
|
Et rigtigt scan af [`examples/demo-repo`](examples/demo-repo), en lille Playwright-suite med et CI-workflow. Her er, hvor dens point forsvandt hen:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirs opgørelse af fradrag: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirs opgørelse af fradrag: WORTHINESS 80/100 WORTHY, scoren pr. kategori, fradragsboksen pr. alvorlighed og en FIX THIS FIRST-liste" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Genereret af `npm run docs:hero` ud fra et rigtigt scan og låst mod afvigelser i CI. Den fulde `--verbose`-rapport fra samme scan er [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Det måler **robusthed, ikke korrekthed**. `.btn.btn-primary > div:nth-child(2)` består i dag og bliver ved med at bestå, indtil nogen rører ved markuppen. En lav score påstår aldrig, at testen er i stykker, kun at den afhænger af markup, som ingen har lovet at bevare.
|
package/README.de.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir liest die Testsuite, die CI-Workflows und, falls vorhanden, den Report
|
|
|
81
81
|
Ein echter Scan von [`examples/demo-repo`](examples/demo-repo), einer kleinen Playwright-Suite mit CI-Workflow. Hier sind seine Punkte geblieben:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirs Abzugsaufschlüsselung: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirs Abzugsaufschlüsselung: WORTHINESS 80/100 WORTHY, der Score nach Kategorie, die Abzugsbox nach Schweregrad und eine FIX THIS FIRST-Liste" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Erzeugt mit `npm run docs:hero` aus einem echten Scan und in der CI gegen Abweichungen gesichert. Der vollständige `--verbose`-Report desselben Scans ist [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Das misst **Robustheit, nicht Korrektheit**. `.btn.btn-primary > div:nth-child(2)` besteht heute und besteht weiter, bis jemand das Markup anfasst. Ein niedriger Score behauptet nie, der Test sei kaputt, nur dass er von Markup abhängt, dessen Erhalt niemand versprochen hat.
|
package/README.es.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir lee la suite, los workflows de CI y, si lo tienes, el informe de una ej
|
|
|
81
81
|
Un escaneo real de [`examples/demo-repo`](examples/demo-repo), una pequeña suite de Playwright con un workflow de CI. Aquí es adonde fueron sus puntos:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="El desglose de deducciones de Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="El desglose de deducciones de Mjölnir: WORTHINESS 80/100 WORTHY, la puntuación por categoría, el cuadro de deducciones por severidad y una lista FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Generado con `npm run docs:hero` a partir de un escaneo real y bloqueado contra desviaciones en CI. El informe `--verbose` completo del mismo escaneo es [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Esto mide **resiliencia, no corrección**. `.btn.btn-primary > div:nth-child(2)` pasa hoy y sigue pasando hasta que alguien toca el marcado. Una puntuación baja nunca afirma que el test esté roto, solo que depende de un marcado que nadie prometió mantener.
|
package/README.fr.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir lit la suite, les workflows CI et, si vous en avez un, le rapport d'une
|
|
|
81
81
|
Un vrai scan de [`examples/demo-repo`](examples/demo-repo), une petite suite Playwright avec un workflow CI. Voici où sont partis ses points :
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Le détail des déductions de Mjölnir : WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Le détail des déductions de Mjölnir : WORTHINESS 80/100 WORTHY, le score par catégorie, l'encadré des déductions par sévérité et une liste FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Généré par `npm run docs:hero` à partir d'un vrai scan et verrouillé contre toute dérive en CI. Le rapport `--verbose` complet du même scan est [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Cela mesure la **robustesse, pas l'exactitude**. `.btn.btn-primary > div:nth-child(2)` passe aujourd'hui et continue de passer jusqu'à ce que quelqu'un touche au balisage. Un score bas n'affirme jamais que le test est cassé, seulement qu'il dépend d'un balisage que personne n'a promis de conserver.
|
package/README.gr.md
CHANGED
|
@@ -81,7 +81,7 @@ npx mjolnir-qa@latest
|
|
|
81
81
|
Μια πραγματική σάρωση του [`examples/demo-repo`](examples/demo-repo), μιας μικρής σουίτας Playwright με CI workflow. Εδώ πήγαν οι πόντοι της:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Η ανάλυση αφαιρέσεων του Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Η ανάλυση αφαιρέσεων του Mjölnir: WORTHINESS 80/100 WORTHY, η βαθμολογία ανά κατηγορία, το πλαίσιο αφαιρέσεων ανά σοβαρότητα και μια λίστα FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Δημιουργείται με `npm run docs:hero` από πραγματική σάρωση και κλειδώνεται έναντι αποκλίσεων στο CI. Η πλήρης αναφορά `--verbose` της ίδιας σάρωσης είναι το [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Αυτό μετρά **ανθεκτικότητα, όχι ορθότητα**. Το `.btn.btn-primary > div:nth-child(2)` περνά σήμερα και θα συνεχίσει να περνά μέχρι κάποιος να αγγίξει το markup. Μια χαμηλή βαθμολογία δεν ισχυρίζεται ποτέ ότι το τεστ είναι χαλασμένο, μόνο ότι εξαρτάται από markup που κανείς δεν υποσχέθηκε να διατηρήσει.
|
package/README.he.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir קורא את חבילת הבדיקות, את ה-workflows של ה-CI,
|
|
|
81
81
|
סריקה אמיתית של [`examples/demo-repo`](examples/demo-repo), חבילת Playwright קטנה עם workflow של CI. לכאן הלכו הנקודות שלה:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="פירוט הניכויים של Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="פירוט הניכויים של Mjölnir: WORTHINESS 80/100 WORTHY, הציון לפי קטגוריה, תיבת הניכויים לפי חומרה ורשימת FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>נוצר על ידי `npm run docs:hero` מסריקה אמיתית ונעול מפני סטייה ב-CI. דוח ה-`--verbose` המלא של אותה סריקה הוא [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
זה מודד **עמידות, לא נכונות**. `.btn.btn-primary > div:nth-child(2)` עובר היום וימשיך לעבור עד שמישהו ייגע ב-markup. ציון נמוך אף פעם לא טוען שהבדיקה שבורה, רק שהיא תלויה ב-markup שאף אחד לא הבטיח לשמור.
|
package/README.it.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir legge la suite, i workflow CI e, se ce l'hai, il report di un'esecuzion
|
|
|
81
81
|
Una scansione reale di [`examples/demo-repo`](examples/demo-repo), una piccola suite Playwright con un workflow CI. Ecco dove sono finiti i suoi punti:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Il dettaglio delle detrazioni di Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Il dettaglio delle detrazioni di Mjölnir: WORTHINESS 80/100 WORTHY, il punteggio per categoria, il riquadro delle detrazioni per gravità e una lista FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Generato da `npm run docs:hero` a partire da una scansione reale e bloccato contro le derive in CI. Il report `--verbose` completo della stessa scansione è [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Questo misura la **resilienza, non la correttezza**. `.btn.btn-primary > div:nth-child(2)` passa oggi e continua a passare finché qualcuno non tocca il markup. Un punteggio basso non afferma mai che il test è rotto, solo che dipende da un markup che nessuno ha promesso di mantenere.
|
package/README.ja.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir は、テストスイート、CI workflow、そして手元にあれば
|
|
|
81
81
|
CI workflow を持つ小さな Playwright スイート、[`examples/demo-repo`](examples/demo-repo) の実際のスキャンです。点数がどこで失われたかはこちら:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir の減点内訳:WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir の減点内訳:WORTHINESS 80/100 WORTHY、カテゴリ別スコア、重大度別の減点ボックス、そして FIX THIS FIRST リスト" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>`npm run docs:hero` により実際のスキャンから生成され、CI でずれがないよう固定されています。同じスキャンの完全な `--verbose` レポートは [`demo.svg`](assets/readme/demo.svg)(`npm run docs:demo`)です。</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
これが測るのは**正しさではなく耐久性**です。`.btn.btn-primary > div:nth-child(2)` は今日は通り、誰かがマークアップに触れるまで通り続けます。低いスコアはテストが壊れていると主張するものではなく、誰も維持を約束していないマークアップに依存していることを示すだけです。
|
package/README.ko.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir는 테스트 스위트와 CI workflow, 그리고 있다면 실제 실
|
|
|
81
81
|
CI workflow가 있는 작은 Playwright 스위트인 [`examples/demo-repo`](examples/demo-repo)를 실제로 스캔한 결과입니다. 점수는 여기서 깎였습니다.
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir의 감점 내역: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir의 감점 내역: WORTHINESS 80/100 WORTHY, 카테고리별 점수, 심각도별 감점 상자, 그리고 FIX THIS FIRST 목록" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>`npm run docs:hero`가 실제 스캔으로 생성하며 CI에서 변경되지 않도록 고정됩니다. 같은 스캔의 전체 `--verbose` 리포트는 [`demo.svg`](assets/readme/demo.svg)입니다 (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
이 점수는 **정확성이 아니라 복원력**을 측정합니다. `.btn.btn-primary > div:nth-child(2)`는 오늘 통과하고, 누군가 마크업을 건드리기 전까지 계속 통과합니다. 낮은 점수는 테스트가 망가졌다고 주장하지 않으며, 아무도 유지하겠다고 약속하지 않은 마크업에 의존한다는 뜻일 뿐입니다.
|
package/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
<img src="assets/readme/hero.svg" alt="Mjölnir.
|
|
3
|
+
<img src="assets/readme/hero.svg" alt="Mjölnir. Prevents release-blocking false-green." width="100%" />
|
|
4
4
|
|
|
5
5
|
<br />
|
|
6
6
|
|
|
7
|
-
Mjölnir
|
|
8
|
-
|
|
7
|
+
Mjölnir quantifies how much you can trust your CI — and blocks releases
|
|
8
|
+
when verification isn't earning its keep.
|
|
9
9
|
|
|
10
10
|
<br />
|
|
11
11
|
|
|
@@ -39,8 +39,9 @@ it; `npm run docs:translations` reports how far.
|
|
|
39
39
|
|
|
40
40
|
## A green check is a claim, not a proof
|
|
41
41
|
|
|
42
|
-
A green check means the pipeline did not fail. It does not mean
|
|
43
|
-
ran, or that they could have failed. Every one of these
|
|
42
|
+
A green check means the pipeline did not fail. It does not mean
|
|
43
|
+
the tests ran, or that they could have failed. Every one of these
|
|
44
|
+
ships green — and every one of them makes your release untrustworthy:
|
|
44
45
|
|
|
45
46
|
- a committed `.only` that ran 3 tests instead of 900
|
|
46
47
|
- `continue-on-error: true` on the job that was supposed to gate
|
|
@@ -50,8 +51,10 @@ ran, or that they could have failed. Every one of these ships green:
|
|
|
50
51
|
- a report the workflow uploads but never generated
|
|
51
52
|
- a hard sleep holding a race condition together
|
|
52
53
|
|
|
53
|
-
None of them turns the pipeline red, and each one looks deliberate
|
|
54
|
-
review. That is why they survive.
|
|
54
|
+
None of them turns the pipeline red, and each one looks deliberate
|
|
55
|
+
in review. That is why they survive. **They are the reason releases ship bugs.**
|
|
56
|
+
|
|
57
|
+
Here is Mjölnir reading a real one:
|
|
55
58
|
|
|
56
59
|
<p align="center">
|
|
57
60
|
<img src="assets/readme/scan.svg" alt="The demo repository's CI workflow, read line by line. Mjölnir flags each finding at the line it reported, with its rule, what is wrong, its evidence level and its measured false-positive rate." width="800" />
|
|
@@ -98,7 +101,7 @@ A real scan of [`examples/demo-repo`](examples/demo-repo), a small
|
|
|
98
101
|
Playwright suite with a CI workflow. This is where its points went:
|
|
99
102
|
|
|
100
103
|
<p align="center">
|
|
101
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir's deduction breakdown: WORTHINESS
|
|
104
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir's deduction breakdown: WORTHINESS 80/100 WORTHY, the score by category, the per-severity deduction box, and a FIX THIS FIRST list" width="520" />
|
|
102
105
|
</p>
|
|
103
106
|
|
|
104
107
|
<sub>Generated by `npm run docs:hero` from a real scan and drift-locked in
|
|
@@ -188,35 +191,45 @@ That is the unit of value: one place where CI reports a pass it did not earn.
|
|
|
188
191
|
npx mjolnir-qa@latest
|
|
189
192
|
```
|
|
190
193
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
+
Three steps to trust your release pipeline:
|
|
195
|
+
|
|
196
|
+
1. **Scan** — `npx mjolnir-qa@latest` — scans the current directory, prints the Trust Report, exits `1` if findings at the gate
|
|
197
|
+
2. **Block in CI** — `npx mjolnir-qa@latest --scope changed` — scans only changed lines, blocks PRs with error findings
|
|
198
|
+
3. **Fix and re-verify** — `mjolnir fix` applies safe auto-fixes, then re-scans to prove each one landed
|
|
194
199
|
|
|
195
|
-
|
|
196
|
-
drown your first pull request:
|
|
200
|
+
Add it to your pipeline so it gates releases on error findings:
|
|
197
201
|
|
|
198
202
|
```bash
|
|
199
|
-
npx mjolnir-qa@latest --scope changed
|
|
203
|
+
npx mjolnir-qa@latest --scope changed --blocking error
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
`mjolnir ci install` writes the GitHub Actions workflow with a blocking gate (error severity), pinned to this version:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
mjolnir ci install --gate error
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Run advisory mode only when you want to preview findings without blocking:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
mjolnir ci install --gate advisory
|
|
200
216
|
```
|
|
201
217
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
|
208
|
-
|
|
|
209
|
-
| `mjolnir`
|
|
210
|
-
| `mjolnir
|
|
211
|
-
| `mjolnir
|
|
212
|
-
| `mjolnir
|
|
213
|
-
| `mjolnir
|
|
214
|
-
| `mjolnir
|
|
215
|
-
| `mjolnir
|
|
216
|
-
| `mjolnir
|
|
217
|
-
| `mjolnir --json` / `--format sarif` | Machine-readable output, GitHub Code Scanning |
|
|
218
|
-
| `mjolnir --format codequality` | GitLab Code Quality report (MR widget artifact) |
|
|
219
|
-
| `mjolnir --strict` | Also run quarantine-tier rules (higher FP risk) |
|
|
218
|
+
| Command | What it does |
|
|
219
|
+
| ----------------------------------- | ----------------------------------------------- |
|
|
220
|
+
| `mjolnir` | Trust Report: verdict, confidence, next action |
|
|
221
|
+
| `mjolnir --scope changed` | Only what your branch introduced (CI form) |
|
|
222
|
+
| `mjolnir --blocking error` | Exit 1 on error findings — gate releases |
|
|
223
|
+
| `mjolnir ci install --gate error` | Write the blocking PR workflow |
|
|
224
|
+
| `mjolnir business-case` | ROI estimate: projected savings per finding |
|
|
225
|
+
| `mjolnir explain QA-CI-001` | What, why and fix, plus the measured FP rate |
|
|
226
|
+
| `mjolnir why src/a.spec.ts:42` | Why this exact line was flagged. Never gates. |
|
|
227
|
+
| `mjolnir forensics ./test-results/` | Runtime evidence from a real run |
|
|
228
|
+
| `mjolnir trust-report` | Self-contained Trust Artifact (md + json) |
|
|
229
|
+
| `mjolnir handoff` | Remediation plan for a coding agent |
|
|
230
|
+
| `mjolnir --json` / `--format sarif` | Machine-readable output, GitHub Code Scanning |
|
|
231
|
+
| `mjolnir --format codequality` | GitLab Code Quality report (MR widget artifact) |
|
|
232
|
+
| `mjolnir --strict` | Also run quarantine-tier rules (higher FP risk) |
|
|
220
233
|
|
|
221
234
|
<details>
|
|
222
235
|
<summary><strong>Every other command</strong> — flake triage, reporting, governance</summary>
|
|
@@ -360,8 +373,8 @@ e2e/login.spec.ts
|
|
|
360
373
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
361
374
|
|
|
362
375
|
e2e/checkout.spec.ts
|
|
363
|
-
[
|
|
364
|
-
role/text:
|
|
376
|
+
[██████████████████░░] 88 / 100
|
|
377
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
365
378
|
```
|
|
366
379
|
|
|
367
380
|
This measures **resilience, not correctness**.
|
|
@@ -543,24 +556,35 @@ propagate, always-success steps, reports consumed but never generated, and
|
|
|
543
556
|
gates skipped on the events that should block. Each finding names the job,
|
|
544
557
|
the step and the line, and carries its own evidence level.
|
|
545
558
|
|
|
546
|
-
Generate the PR workflow
|
|
559
|
+
Generate the PR workflow with a blocking gate (error severity) — this is the
|
|
560
|
+
default for a reason: findings that survive your pipeline survive your release.
|
|
547
561
|
|
|
548
562
|
```bash
|
|
549
|
-
mjolnir ci install
|
|
563
|
+
mjolnir ci install --gate error
|
|
550
564
|
```
|
|
551
565
|
|
|
552
|
-
|
|
566
|
+
The gate is pinned to this version — a new release must not change your gate
|
|
567
|
+
semantics without a commit of yours. Switch to advisory only when you want
|
|
568
|
+
to preview findings without blocking:
|
|
569
|
+
|
|
570
|
+
```bash
|
|
571
|
+
mjolnir ci install --gate advisory
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
In your existing workflow, pin the action and gate on error severity:
|
|
553
575
|
|
|
554
576
|
```yaml
|
|
555
|
-
- uses: Sergey-Bar/Mjolnir@
|
|
577
|
+
- uses: Sergey-Bar/Mjolnir@4a588bc62d517bc85fc44c0eae64c6587d3bf70b0
|
|
556
578
|
with:
|
|
557
579
|
scope: changed
|
|
558
580
|
fail-on: error
|
|
559
581
|
```
|
|
560
582
|
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
583
|
+
The `--blocking error` flag does the same in any CI pipeline:
|
|
584
|
+
|
|
585
|
+
```bash
|
|
586
|
+
npx mjolnir-qa@latest --scope changed --blocking error
|
|
587
|
+
```
|
|
564
588
|
|
|
565
589
|
To put findings in GitHub Code Scanning, upload SARIF (requires
|
|
566
590
|
`security-events: write` at workflow or job scope):
|
|
@@ -719,6 +743,7 @@ The full docs site is at <https://sergey-bar.github.io/Mjolnir/>.
|
|
|
719
743
|
|
|
720
744
|
| Document | What's in it |
|
|
721
745
|
| ------------------------------------------------------ | ------------------------------------------------- |
|
|
746
|
+
| [docs/EXECUTIVE-ROI.md](docs/EXECUTIVE-ROI.md) | Business case for decision-makers |
|
|
722
747
|
| [docs/SCORING.md](docs/SCORING.md) | Score normalization and evidence weighting |
|
|
723
748
|
| [docs/TERMINOLOGY.md](docs/TERMINOLOGY.md) | Canonical vocabulary: one word per concept |
|
|
724
749
|
| [docs/FP-AUDIT.md](docs/FP-AUDIT.md) | Measured false-positive rates and the method |
|
package/README.no.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir leser testsuiten, CI-workflowene og, hvis du har en, rapporten fra en e
|
|
|
81
81
|
En ekte skanning av [`examples/demo-repo`](examples/demo-repo), en liten Playwright-suite med en CI-workflow. Her er hvor poengene ble av:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirs oversikt over trekk: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnirs oversikt over trekk: WORTHINESS 80/100 WORTHY, scoren per kategori, trekkboksen per alvorlighetsgrad og en FIX THIS FIRST-liste" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Generert av `npm run docs:hero` fra en ekte skanning og låst mot avvik i CI. Den fullstendige `--verbose`-rapporten fra samme skanning er [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Dette måler **robusthet, ikke korrekthet**. `.btn.btn-primary > div:nth-child(2)` består i dag og fortsetter å bestå til noen rører markupen. En lav score påstår aldri at testen er ødelagt, bare at den avhenger av markup ingen har lovet å beholde.
|
package/README.pl.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir czyta zestaw testów, workflow CI oraz, jeśli go masz, raport z prawdz
|
|
|
81
81
|
Prawdziwy skan [`examples/demo-repo`](examples/demo-repo), małego zestawu Playwright z workflow CI. Oto, gdzie poszły jego punkty:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Rozbicie potrąceń Mjölnira: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Rozbicie potrąceń Mjölnira: WORTHINESS 80/100 WORTHY, wynik według kategorii, ramka potrąceń według ważności i lista FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Wygenerowane przez `npm run docs:hero` z prawdziwego skanu i zabezpieczone w CI przed rozjazdem. Pełny raport `--verbose` z tego samego skanu to [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
To mierzy **odporność, a nie poprawność**. `.btn.btn-primary > div:nth-child(2)` przechodzi dziś i będzie przechodzić, dopóki ktoś nie ruszy znaczników. Niski wynik nigdy nie twierdzi, że test jest zepsuty, tylko że zależy od znaczników, których nikt nie obiecał zachować.
|
package/README.ru.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir читает набор тестов, CI-workflow и, если он е
|
|
|
81
81
|
Реальное сканирование [`examples/demo-repo`](examples/demo-repo), небольшого набора тестов Playwright с CI-workflow. Вот куда ушли его баллы:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Разбивка вычетов Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Разбивка вычетов Mjölnir: WORTHINESS 80/100 WORTHY, оценка по категориям, блок вычетов по серьёзности и список FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>Сгенерировано командой `npm run docs:hero` из реального сканирования и защищено от расхождений в CI. Полный отчёт `--verbose` того же сканирования — [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Это измеряет **устойчивость, а не корректность**. `.btn.btn-primary > div:nth-child(2)` проходит сегодня и будет проходить, пока кто-нибудь не тронет разметку. Низкая оценка никогда не утверждает, что тест сломан, — только что он зависит от разметки, сохранять которую никто не обещал.
|
package/README.th.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir อ่านชุดเทสต์ CI workflow และรายง
|
|
|
81
81
|
การสแกนจริงของ [`examples/demo-repo`](examples/demo-repo) ซึ่งเป็นชุดเทสต์ Playwright ขนาดเล็กที่มี CI workflow คะแนนของมันหายไปตรงนี้:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="รายละเอียดการหักคะแนนของ Mjölnir: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="รายละเอียดการหักคะแนนของ Mjölnir: WORTHINESS 80/100 WORTHY คะแนนแยกตามหมวดหมู่ กล่องการหักคะแนนตามความรุนแรง และรายการ FIX THIS FIRST" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>สร้างโดย `npm run docs:hero` จากการสแกนจริง และถูกล็อกไม่ให้คลาดเคลื่อนใน CI รายงาน `--verbose` ฉบับเต็มของการสแกนเดียวกันคือ [`demo.svg`](assets/readme/demo.svg) (`npm run docs:demo`)</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
สิ่งนี้วัด **ความทนทาน ไม่ใช่ความถูกต้อง** `.btn.btn-primary > div:nth-child(2)` ผ่านในวันนี้ และจะผ่านต่อไปจนกว่าจะมีคนแตะ markup คะแนนต่ำไม่เคยอ้างว่าเทสต์พัง เพียงบอกว่ามันพึ่งพา markup ที่ไม่มีใครสัญญาว่าจะคงไว้
|
package/README.tr.md
CHANGED
|
@@ -81,7 +81,7 @@ Mjölnir test paketini, CI workflow'larını ve varsa gerçek bir çalıştırma
|
|
|
81
81
|
CI workflow'u olan küçük bir Playwright paketi olan [`examples/demo-repo`](examples/demo-repo) üzerinde gerçek bir tarama. Puanlarının nereye gittiği burada:
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir'in kesinti dökümü: WORTHINESS
|
|
84
|
+
<img src="assets/readme/terminal-hero.svg" alt="Mjölnir'in kesinti dökümü: WORTHINESS 80/100 WORTHY, kategoriye göre puan, önem derecesine göre kesinti kutusu ve bir FIX THIS FIRST listesi" width="520" />
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<sub>`npm run docs:hero` ile gerçek bir taramadan üretilir ve CI'da sapmaya karşı kilitlenir. Aynı taramanın tam `--verbose` raporu [`demo.svg`](assets/readme/demo.svg) dosyasıdır (`npm run docs:demo`).</sub>
|
|
@@ -312,8 +312,8 @@ e2e/login.spec.ts
|
|
|
312
312
|
role/text: 1 · testid: 0 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
313
313
|
|
|
314
314
|
e2e/checkout.spec.ts
|
|
315
|
-
[
|
|
316
|
-
role/text:
|
|
315
|
+
[██████████████████░░] 88 / 100
|
|
316
|
+
role/text: 4 · testid: 1 · plain-css: 0 · css-chains: 1 ⚠ · xpath: 0
|
|
317
317
|
```
|
|
318
318
|
|
|
319
319
|
Bu, **doğruluğu değil dayanıklılığı** ölçer. `.btn.btn-primary > div:nth-child(2)` bugün geçer ve biri işaretlemeye dokunana kadar geçmeye devam eder. Düşük bir puan asla testin bozuk olduğunu iddia etmez; yalnızca kimsenin korumayı vaat etmediği işaretlemeye bağlı olduğunu söyler.
|