diff --git a/tests/e2e/admin/admin-b2b-submissions.spec.ts b/tests/e2e/admin/admin-b2b-submissions.spec.ts
index 5c276d3..8ff1228 100644
--- a/tests/e2e/admin/admin-b2b-submissions.spec.ts
+++ b/tests/e2e/admin/admin-b2b-submissions.spec.ts
@@ -124,4 +124,110 @@ test.describe('سناریوی مدیریت درخواستهای B2B و فرم
await expect(page.locator('span').filter({ hasText: 'کلینیک تخصصی دامپزشکی پایتخت' }).first()).toBeVisible({ timeout: 10000 });
});
+
+ test('راستیآزمایی رندر امن و عدم اجرای پیلود XSS در پنل ادمین (Admin Safe XSS Rendering)', async ({ page }) => {
+ let adminDialogFired = false;
+ page.on('dialog', () => {
+ adminDialogFired = true;
+ });
+
+ const xssSenderName = '
دکتر تست';
+ const xssMessageBody = ' متن پیام تستی با پیلود مخرب';
+
+ await page.route('**/api/auth/admin-login*', async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: 'application/json',
+ body: JSON.stringify({
+ success: true,
+ data: {
+ accessToken: 'mock_e2e_admin_jwt_token',
+ user: { id: 'admin-1', email: 'admin@canina.ir', role: 'SUPER_ADMIN' },
+ },
+ }),
+ });
+ });
+
+ await page.route('**/api/auth/refresh*', async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: 'application/json',
+ body: JSON.stringify({
+ success: true,
+ data: {
+ accessToken: 'mock_e2e_admin_jwt_token',
+ user: { id: 'admin-1', email: 'admin@canina.ir', role: 'SUPER_ADMIN' },
+ },
+ }),
+ });
+ });
+
+ await page.route('**/api/users/profile*', async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: 'application/json',
+ body: JSON.stringify({
+ success: true,
+ data: { id: 'admin-1', email: 'admin@canina.ir', role: 'SUPER_ADMIN' },
+ }),
+ });
+ });
+
+ await page.route('**/api/contact/submissions*', async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: 'application/json',
+ body: JSON.stringify({
+ success: true,
+ items: [
+ {
+ id: 'contact-xss-1',
+ name: xssSenderName,
+ phone: '09121112233',
+ subject: 'تست امنیت XSS در ادمین',
+ message: xssMessageBody,
+ status: 'PENDING',
+ createdAt: new Date().toISOString(),
+ },
+ ],
+ }),
+ });
+ });
+
+ await page.route('**/api/contact/info*', async (route) => {
+ await route.fulfill({
+ status: 200,
+ contentType: 'application/json',
+ body: JSON.stringify([]),
+ });
+ });
+
+ // 1. لاگین ادمین
+ await page.goto('/login', { waitUntil: 'domcontentloaded' });
+ const emailInput = page.locator('input[type="email"]');
+ const passwordInput = page.locator('input[type="password"]');
+ await expect(emailInput).toBeVisible({ timeout: 10000 });
+ await emailInput.fill('admin@canina.ir');
+ await passwordInput.fill('Admin@123456');
+
+ const submitBtn = page.getByRole('button', { name: /ورود با رمز عبور|ورود به پنل|ورود/i }).first();
+ await submitBtn.click();
+ await page.waitForTimeout(500);
+
+ // 2. ورود به صفحه پیامهای تماس در پنل ادمین
+ await page.goto('/contact', { waitUntil: 'domcontentloaded' });
+ await expect(page).toHaveURL(/\/contact/);
+
+ // 3. راستیآزمایی رندر امن نام فرستنده به عنوان متن خام در جدول
+ const senderCell = page.locator('td').filter({ hasText: xssSenderName }).first();
+ await expect(senderCell).toBeVisible({ timeout: 15000 });
+
+ // 4. باز کردن جزئیات پیام و راستیآزمایی نمایش متن پیام
+ const detailsBtn = page.getByRole('button', { name: /مشاهده و پاسخ|مشاهده/i }).first();
+ await expect(detailsBtn).toBeVisible({ timeout: 10000 });
+ await detailsBtn.click();
+
+ // 5. راستیآزمایی قطعی عدم اجرای آلرت جاوااسکریپتی در پنل ادمین
+ expect(adminDialogFired).toBe(false);
+ });
});