pwa-check: اپت واقعاً PWA هست یا نه؟
خلاصهٔ کاملتر
پروژهٔ اپنسورس pwa-check یه ابزار خط فرمانه که به یه سؤال ساده جواب میده: وباپت واقعاً قابل نصبه و آفلاین بالا میاد، یا فقط اسمش PWA ـه؟ تو مستندات پروژه اومده که ابزار HTML، مانیفست، اسکریپتها و service worker (یعنی همون اسکریپتی که پشت صحنه درخواستها رو کش میکنه تا سایت بدون اینترنت هم کار کنه) رو اسکن میکنه و مستقیم انگشت میذاره روی چیزایی که نصبپذیری یا رفتار آفلاین رو خراب میکنن.
سراغ Web App Manifest میره، چه توی HTML باشه چه با جاوااسکریپت تزریق شده باشه، و فیلدهای مهم نصبپذیری مثل scope، display، start_url، icons، screenshots، shortcuts و share_target رو چک میکنه. حتی میره ببینه آیکونها و اسکرینشاتهای معرفیشده واقعاً در دسترسن یا نه، چون آیکون شکسته اپ رو نیمهکاره نشون میده. تگ viewport هم باید width=device-width و initial-scale=1 و viewport-fit=cover رو داشته باشه.
برای iOS دنبال لینکهای apple-touch-startup-image میگرده و اگه پیداشون کنه، وجود apple-mobile-web-app-capable با مقدار yes رو هم لازم میدونه، چون تا iOS 26.4 بدون اون تگ اسپلشاسکرینها بالا نمیان. روی سرویس ورکر هم فقط ثبتشدنش کافی نیست: هندلرهای install، activate، fetch، push و notificationclick و رفتار کش رو جدا بررسی میکنه و سرویس ورکرهای سبک Workbox رو هم میشناسه.
خروجی سه حالت داره، pass و warn و fail، و اگه حتی یه fail باشه پروسه با کد خروجی غیرصفر تموم میشه؛ یعنی بدون کار اضافه میشینه تو CI. با --json خروجی ماشینخوان میگیری، با --issues-only فقط مشکلات رو میبینی و با --fail-on-warn هشدارها هم شکست حساب میشن.
npm i -g @pwa-today/pwa-check
pwa-check https://example.comچکهای محلی رایگانن، ولی به گفتهٔ مستندات ادیتهای runtime پولیان و روی سرویس ابری pwa.today اجرا میشن؛ توکن فقط از متغیر محیطی PWA_AUDIT_TOKEN خونده میشه و خودش بهتنهایی چکهای پولی رو فعال نمیکنه. تنظیمات هم از pwa-check.yml خونده میشه و میتونی یه quality gate با حداقل امتیاز بذاری:
audit:
profile: standard
qualityGate:
minimumScore: 90
failOn:
- critical
- highنکات کلیدی:
- بسته روی npm با نام @pwa-today/pwa-check منتشر شده و لایسنسش ISC ـه.
- وجود apple-mobile-web-app-capable تا iOS 26.4 برای کار کردن اسپلشاسکرینها لازمه.
- هر نتیجه یه کد پایدار داره؛ کدهای warn و fail فیلدهای priority و impact و fix رو هم دارن.
- چک service-worker-deployment فقط با opt-in صریح اجرا میشه، چون یه دستور دیپلوی محلی رو اجرا میکنه.
- اطلاعات احراز هویت فقط به مبدأ همون سایت فرستاده میشه و قبل از ریدایرکت به دامنهٔ دیگه حذف میشه.




