e2e: تست end-to-end با زبان طبیعی برای وب و موبایل
خلاصهٔ کاملتر
e2e یه فریمورک تست end-to-end (یعنی تستی که اپ رو مثل یه کاربر واقعی از اول تا آخر اجرا میکنه) برای اپهای وب و موبایله که تیم TesterArmy ساخته. ایدهی اصلیش اینه که بهجای نوشتن تکتک کلیکها و تایپها، هدف رو به زبان طبیعی مینویسی و یه ایجنت خودش اپ رو تا اونجا میبره. توی همون تست هم میتونی با locator و assertion معمولی نتیجه رو چک کنی.
تو README پروژه این مثال اومده که یه کاربر پلنش رو به Pro ارتقا میده:
test('a member upgrades to Pro', async ({ app, agent, screen }) => {
await app.open('/settings/billing');
await agent.act('upgrade the workspace to the Pro plan');
await agent.assert('the invoice preview shows a prorated amount');
await expect(screen.getByRole('status')).toContainText('Pro');
});اینجا agent.act و agent.assert کارشون رو با زبان طبیعی انجام میدن، ولی خط آخر یه assertion کاملاً معمولیه. نکتهی جالب اینه که وقتی یه قدم ایجنتی با یه assertion بعدی تأیید بشه، کارهایی که ایجنت کرده ضبط میشه. دفعهی بعد همون کارها بدون هیچ صدا زدن مدلی دوباره اجرا میشن، تا وقتی که اپ عوض بشه. یعنی هزینه و کندی مدل فقط وقتی پیش میاد که واقعاً لازمه.
تستهایی که قدم ایجنتی ندارن اصلاً به مدل نیاز ندارن. برای بقیه هم میتونی اشتراک خودت، API key یا یه مدل لوکال رو وصل کنی. شروع کار با npx e2e init هست که موتور (وب یا موبایل) و ارائهدهندهی مدل رو میپرسه و یه config و تست نمونه میسازه. نمونههای آماده برای Vite، Next.js، Expo و SwiftUI هم تو ریپو هست.
پروژه چند تا پکیج داره: موتور وب که از طریق Playwright روی Chromium، Firefox و WebKit کار میکنه، موتور موبایل برای شبیهسازهای iOS و Android، یه reporter که نتیجه رو بهصورت کامنت روی pull request میذاره و پکیجهایی برای مرورگرها و شبیهسازهای هاستشده. مستندات هم داخل خود پکیج میاد تا coding agentها بتونن آفلاین از node_modules/e2e/docs بخوننش.
یه نکته هم دربارهی telemetry هست: CLI دادهی ناشناس استفاده رو میفرسته، ولی نه محتوای تست و اپ و نه اطلاعات ورود. با E2E_TELEMETRY_DISABLED=1 میشه خاموشش کرد. پروژه هنوز تو مسیر نسخهی 1.0 هست و APIها ممکنه بین نسخههای minor عوض بشن.
نکات کلیدی:
- e2e تست end-to-end رو با ترکیب دستورهای زبان طبیعی و assertionهای معمولی مینویسه.
- قدمهای تأییدشدهی ایجنت ضبط میشن و تا تغییر اپ بدون صدا زدن مدل replay میشن.
- موتور وب روی Playwright سواره و Chromium، Firefox و WebKit رو پوشش میده.
- مدل رو خودت انتخاب میکنی: اشتراک، API key یا مدل لوکال.
- پروژه با لایسنس Apache-2.0 منتشر شده و هنوز به نسخهی 1.0 نرسیده.




