הגדרת בדיקות Cypress עבור 1C-Bitrix

בדיקות רגרסיה ידניות של פרויקטי Bitrix גוזלות זמן ואינן עומדות בקצב צמיחת התכונות. אנו מגדירים בדיקות Cypress לכיסוי E2E של נתיבים קריטיים—מסינון ועד תשלום. הצוות שלנו מספק את הפרויקט במפתח מלא: מבדיקת היתכנות ופיתוח ועד אינטגרציית CI ותמיכה שוטפת, תוך הבטחת ריצות יציבות ואיתור תקלות מהיר.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת בדיקות Cypress עבור 1C-Bitrix
פשוט
~1 יום

הכישורים שלנו:

שאלות נפוצות

הגדרת בדיקות Cypress עבור 1C-Bitrix

פרויקט ה-Bitrix שלך גדל, ובדיקות רגרסיה ידניות אוכלות 30% מהתקציב. נתקלנו בזה פעמים רבות. המהנדסים שלנו מיישמים בדיקות Cypress לכיסוי E2E של נתיבים קריטיים — סינון, סל קניות, תשלום. התוצאה: ריצת ערכת בדיקות אורכת 10 דקות במקום 3 שעות של בדיקות ידניות. שגיאות נתפסות לפני העלייה לאוויר, ובדיקות לא יציבות כמעט נעלמות.

למה Cypress עדיף על Selenium עבור Bitrix

Cypress רץ בתוך הדפדפן, עם גישה מלאה ל-DOM ולרשת. בניגוד ל-Selenium, הוא ממתין אוטומטית לאלמנטים ולתגובות AJAX, כך שתנאי מרוץ עם sleep() מיותרים. בפועל, זה מניב פי 2-3 פחות בדיקות לא יציבות ומפחית את זמן הריצה ב-40% בממוצע. בנוסף, Cypress יכול לצלם צילומי מסך על כשלים ולהקליט וידאו — ניפוי באגים אורך דקות, לא שעות. כפי שמאושר בתיעוד הרשמי, ההמתנה האוטומטית של Cypress מפחיתה משמעותית בדיקות לא יציבות.

אילו בעיות אנחנו פותרים

בדיקות Selenium לא יציבות — באגים תכופים עקב בקשות AJAX איטיות של Bitrix (סינון, עדכוני סל). Cypress ממתין שכל בקשות הרשת יסתיימו לפני שהוא עובר לשלב הבא.

מורכבות CSRF וסשן — Bitrix משתמש ב-sessid להגנת CSRF. Cypress קולט אוטומטית עוגיות, ואנחנו מוסיפים פקודות מותאמות אישית לאימות נכון.

חוסר אינטגרציית CI — בדיקות רצות מקומית אבל לא בצנרת. אנחנו מגדירים ריצה ב-GitHub Actions / GitLab CI, עם בדיקות רגרסיה על כל push.

איך להגדיר Cypress לפרויקט Bitrix

ההתקנה וההגדרה הבסיסית אורכות 4–8 שעות. שלבים מרכזיים:

  1. התקנת המסגרת
npm install --save-dev cypress 
  1. יצירת קובץ תצורה npm install --save-dev cypress :
import { defineConfig } from 'cypress';

export default defineConfig({
  e2e: {
    baseUrl: 'https://test.site.ru',
    specPattern: 'cypress/e2e/**/*.cy.ts',
    supportFile: 'cypress/support/e2e.ts',
    viewportWidth: 1280,
    viewportHeight: 900,
    defaultCommandTimeout: 8000,
    requestTimeout: 10000,
    video: false,
    screenshotOnRunFailure: true,
    experimentalModifyObstructiveThirdPartyCode: true,
  },
  env: {
    adminLogin: 'admin',
    adminPassword: '', // из переменной окружения CYPRESS_adminPassword
    siteSessid: '',
  },
});
  1. הוספת פקודות מותאמות אישית לעבודה עם Bitrix (אימות, הוספה לסל, קבלת sessid).

  2. כתיבת בדיקות E2E, למשל, עבור מסנן הקטלוג החכם:

// cypress/e2e/catalog/filter.cy.ts
describe('Умный фильтр каталога', () => {
  beforeEach(() => {
    cy.visit('/catalog/tools/');
    cy.get('.catalog-filter').should('be.visible');
    cy.get('.product-list').should('be.visible');
  });

  it('фильтрует товары по бренду', () => {
    cy.get('[data-filter-prop="BRAND"] [value="bosch"]').click();
    cy.get('.catalog-loading').should('not.exist');
    cy.url().should('include', 'brand=bosch');
    cy.get('.product-brand').each($el => {
      cy.wrap($el).should('have.text', 'Bosch');
    });
  });

  it('сбрасывает фильтр', () => {
    cy.get('[data-filter-prop="BRAND"] [value="bosch"]').click();
    cy.get('.catalog-loading').should('not.exist');
    cy.get('.filter-reset-btn').click();
    cy.get('.catalog-loading').should('not.exist');
    cy.url().should('not.include', 'brand=bosch');
  });

  it('отображает корректное количество товаров в счётчике фильтра', () => {
    cy.get('[data-filter-prop="BRAND"] [value="makita"]').click();
    cy.get('.catalog-loading').should('not.exist');
    cy.get('.products-count').invoke('text').then(text => {
      const count = parseInt(text.replace(/\D/g, ''));
      cy.get('.product-card').should('have.length', Math.min(count, 24));
    });
  });
});

השוואה בין Cypress ל-Selenium עבור Bitrix

פרמטר Cypress Selenium WebDriver
מהירות ריצה פי 2 מהיר יותר (ללא עיכובי רשת בין שלבים) איטי יותר עקב המתנות והתחלת/סיום דפדפן
יציבות בדיקות כמעט ללא בדיקות לא יציבות (המתנה אוטומטית) cypress.config.ts ו-import { defineConfig } from 'cypress'; export default defineConfig({ e2e: { baseUrl: 'https://test.site.ru', specPattern: 'cypress/e2e/**/*.cy.ts', supportFile: 'cypress/support/e2e.ts', viewportWidth: 1280, viewportHeight: 900, defaultCommandTimeout: 8000, requestTimeout: 10000, video: false, screenshotOnRunFailure: true, experimentalModifyObstructiveThirdPartyCode: true, }, env: { adminLogin: 'admin', adminPassword: '', // из переменной окружения CYPRESS_adminPassword siteSessid: '', }, }); תכופים
ניפוי באגים מסע בזמן מובנה, וידאו, צילומי מסך דורש פתרונות צד שלישי
טיפול ב-iframes וחלונות קופצים מוגבל (לא מומלץ) תמיכה מלאה
אינטגרציית CI פשוטה, תמונות Docker מוכנות דורש הגדרת Grid

כדי לבודד בדיקות משירותים חיצוניים, השתמשו ב-// cypress/e2e/catalog/filter.cy.ts describe('Умный фильтр каталога', () => { beforeEach(() => { cy.visit('/catalog/tools/'); cy.get('.catalog-filter').should('be.visible'); cy.get('.product-list').should('be.visible'); }); it('фильтрует товары по бренду', () => { cy.get('[data-filter-prop="BRAND"] [value="bosch"]').click(); cy.get('.catalog-loading').should('not.exist'); cy.url().should('include', 'brand=bosch'); cy.get('.product-brand').each($el => { cy.wrap($el).should('have.text', 'Bosch'); }); }); it('сбрасывает фильтр', () => { cy.get('[data-filter-prop="BRAND"] [value="bosch"]').click(); cy.get('.catalog-loading').should('not.exist'); cy.get('.filter-reset-btn').click(); cy.get('.catalog-loading').should('not.exist'); cy.url().should('not.include', 'brand=bosch'); }); it('отображает корректное количество товаров в счётчике фильтра', () => { cy.get('[data-filter-prop="BRAND"] [value="makita"]').click(); cy.get('.catalog-loading').should('not.exist'); cy.get('.products-count').invoke('text').then(text => { const count = parseInt(text.replace(/\D/g, '')); cy.get('.product-card').should('have.length', Math.min(count, 24)); }); }); }); כדי לדמות בקשות AJAX. זה שימושי במיוחד בעת אינטגרציה עם 1C, שבה חילופי נתונים עשויים להיות לא יציבים. מקרה מעשי: בפרויקט אחד עם קטלוג של 10,000 מוצרים, דימינו תגובות מסנן, והפחתנו את זמן הריצה מ-45 ל-12 דקות.

איך מתבצע היישום

  1. ביקורת פונקציונליות קיימת — זיהוי תרחישים קריטיים (קטלוג, סל, תשלום, חשבון אישי).
  2. הגדרת תשתית — התקנת Cypress, התאמה לתבנית שלך, חיבור CI.
  3. כתיבת בדיקות — כיסוי 5–10 תרחישים מרכזיים בהתחלה, ואז הרחבה לרגרסיה מלאה.
  4. אינטגרציית CI/CD — הגדרה לריצה על כל pull request, שליחת דוחות ל-Slack/Telegram.
  5. הדרכת צוות — מפגש על כתיבה ותחזוקה של בדיקות.

מה כלול בעבודה

  • הגדרת פרויקט Cypress עבור הסביבה שלך.
  • ערכת פקודות מותאמות אישית (אימות, בחירת מטבע, קבלת sessid).
  • ערכת בדיקות E2E לנתיבים קריטיים (מינימום 10 בדיקות).
  • אינטגרציית CI (GitHub Actions / GitLab CI).
  • תיעוד על ריצה ותחזוקה.
  • חודש תמיכה: תיקון בדיקות לא יציבות ושינויים.
רשימת בדיקה למוכנות Cypress
  • [ ] מאפייני נתונים מוגדרים בתבנית (StaleElement).
  • [ ] סביבת בדיקות עם נתוני בדיקה (קטלוג, מחירים, משתמשים).
  • [ ] שרת CI עם Docker ו-Node מוגדר.
  • [ ] קריטריונים לתרחישים קריטיים סוכמו.

לוח זמנים

משימה משך
התקנת Cypress, תצורה בסיסית, פקודות מותאמות אישית 4–8 שעות
בדיקות E2E לתרחישים קריטיים (5–10 בדיקות) 1–2 ימים
ערכת בדיקות מלאה לקטלוג + סל + תשלום 2–4 ימים
אינטגרציה ל-GitHub Actions / GitLab CI 4–8 שעות

למהנדסים שלנו יש מעל 10 שנות ניסיון עם Bitrix והסמכות 1C-Bitrix. אנחנו מבטיחים יציבות בדיקות ודיווח שקוף. צרו קשר לייעוץ והערכת פרויקט. הזמינו יישום בדיקות — הפחיתו עלויות רגרסיה פי 2-3. קבלו ייעוץ לפרויקט שלכם — נעריך את המורכבות ונציע ערכת בדיקות אופטימלית.