MageSentinel

Πώς ξέρετε ότι το checkout δουλεύει μετά από ένα deploy

Το deploy τελείωσε, η αρχική σελίδα φορτώνει και κανείς δεν παραπονέθηκε. Τίποτα από αυτά δεν σας λέει αν ένας πελάτης μπορεί να αγοράσει. Ένα deploy αλλάζει ταυτόχρονα κώδικα, caches και μερικές φορές ρυθμίσεις, και το checkout είναι το σημείο όπου συναντιούνται και τα τρία. Δοκιμάστε την ίδια την αγορά, αμέσως μετά το deploy και ξανά αργότερα.

Όλα τα άρθρα4 λεπτά ανάγνωσης

Ίχνος φωτός από εκτόξευση πυραύλου το σούρουπο

Η σύντομη απάντηση

Αμέσως μετά το deploy, κάντε μια δοκιμαστική αγορά σε ιδιωτικό παράθυρο: πραγματικό προϊόν, καλάθι, checkout, διεύθυνση, τρόπος αποστολής, ως το βήμα της πληρωμής. Αν το κατάστημα το επιτρέπει, κάντε πραγματική παραγγελία και ακυρώστε τη. Μετά αφήστε να τρέχει ένας προγραμματισμένος έλεγχος, γιατί κάποιες βλάβες φαίνονται ώρες αργότερα, όταν ξαναγεμίσουν οι caches, τρέξουν cron jobs ή έρθει κίνηση από άλλη χώρα.

Στα στοιχεία μας για τις βλάβες στο checkout από 89 καταστήματα, το ένα τρίτο των περιστατικών (32%) ξεκίνησε μεταξύ 22:00 και 03:00 ώρα Ελλάδας, τις ώρες που συνήθως τρέχουν deploys, cron jobs, indexers και imports.

Η δοκιμαστική αγορά των πέντε λεπτών

  1. Ιδιωτικό παράθυρο. Χωρίς session διαχειριστή, χωρίς παλιά cookies, χωρίς αποθηκευμένο καλάθι.
  2. Πραγματικό προϊόν. Ένα που έχει απόθεμα και τιμή· αν έχει επιλογές, διαλέξτε τις.
  3. Καλάθι. Το προϊόν είναι εκεί, με την τιμή που έδειχνε η σελίδα του.
  4. Checkout. Η σελίδα ανοίγει και η φόρμα δέχεται μια κανονική διεύθυνση.
  5. Αποστολή. Εμφανίζεται τουλάχιστον ένας τρόπος για αυτή τη διεύθυνση και επιλέγεται.
  6. Πληρωμή. Εμφανίζονται οι τρόποι και φορτώνει η φόρμα της κάρτας. Σε κατάστημα που επιτρέπει δοκιμαστικές παραγγελίες, κάντε μία και ακυρώστε τη από το admin.

Έχετε ανοιχτή την κονσόλα του browser όσο το κάνετε. Ένα κόκκινο σφάλμα τη στιγμή που αποτυγχάνει ένα βήμα είναι το πιο γρήγορο στοιχείο που θα πάρετε.

Δοκιμάστε τη διεύθυνση των πελατών σας

Η αποστολή και ο φόρος εξαρτώνται από τη χώρα και τον ταχυδρομικό κώδικα. Μια δοκιμή με τη διεύθυνση του γραφείου σας δεν θα πιάσει μια τιμή που λείπει για άλλη χώρα.

Γιατί μία δοκιμή αμέσως μετά το deploy δεν φτάνει

Κάποιες βλάβες θέλουν χρόνο για να φανούν. Το full page cache σερβίρει τις παλιές σελίδες μέχρι να λήξει, και μετά χαλάνε οι καινούργιες. Ένα cron job ή ένας indexer τρέχει τη νύχτα και αλλάζει τιμές ή απόθεμα. Ένα script τρίτου φορτώνει νέα έκδοση χωρίς κανένα deploy από τη δική σας πλευρά. Ένα όριο αιτημάτων σε API πληρωμών ή αποστολής ενεργοποιείται μόνο με πραγματική κίνηση.

Γι’ αυτό ο έλεγχος πρέπει να επαναλαμβάνεται. Τρέξτε την ίδια δοκιμαστική αγορά σε τακτά διαστήματα, κάθε 15 ή 30 λεπτά, ώστε μια βλάβη που ξεκινά στις 02:00 να βρεθεί στις 02:15 και όχι όταν γράψει ο πρώτος πελάτης το πρωί.

Αυτοματοποιήστε τη δοκιμή στο pipeline

Αν κάνετε deploy μέσω CI, μια σύντομη δοκιμή σε browser μετά από κάθε deploy σταματά τις περισσότερες κακές εκδόσεις πριν τις δουν οι πελάτες. Το Playwright είναι συνηθισμένη επιλογή. Αυτό το σκαρίφημα περνά ένα κλασικό checkout WooCommerce ως το βήμα της πληρωμής:

ts
// checkout.smoke.spec.ts — μετά από κάθε deploy: npx playwright test
import { test, expect } from '@playwright/test';

const STORE = process.env.STORE_URL!;           // π.χ. https://example.com
const PRODUCT = process.env.PRODUCT_PATH!;      // π.χ. /product/blue-mug/

test('a shopper can reach the payment step', async ({ page }) => {
  await page.goto(STORE + PRODUCT);
  await page.click('button.single_add_to_cart_button');
  await page.goto(STORE + '/checkout/');
  await page.fill('#billing_first_name', 'Test');
  await page.fill('#billing_last_name', 'Shopper');
  await page.fill('#billing_address_1', '1 Test Street');
  await page.fill('#billing_city', 'Athens');
  await page.fill('#billing_postcode', '10558');
  await page.fill('#billing_phone', '2100000000');
  await page.fill('#billing_email', 'test@example.com');
  await expect(page.locator('#shipping_method li').first()).toBeVisible();
  await expect(page.locator('.wc_payment_method').first()).toBeVisible();
});
Οι selectors είναι για το κλασικό checkout του WooCommerce. Το block checkout και το Magento (Luma: #product-addtocart-button, .payment-method) θέλουν δικούς τους.

Τέτοια scripts θέλουν συντήρηση: κάθε αλλαγή θέματος, plugin checkout ή νέο υποχρεωτικό πεδίο μπορεί να χαλάσει τους selectors, και τότε η δοκιμή αποτυγχάνει ενώ το κατάστημα δουλεύει. Κρατήστε τη σύντομη και διορθώστε τη την ίδια μέρα που χαλάει, αλλιώς η ομάδα σταματά να την εμπιστεύεται.

Μάθετε ότι χάλασε το checkout πριν από τους πελάτες σας.

Πραγματικός έλεγχος checkout σε Magento και WooCommerce · 14 ημέρες δωρεάν · χωρίς κάρτα

Όταν η δοκιμή αποτυγχάνει: πρώτα rollback

Αν το checkout χάλασε με το deploy, κάντε rollback και μετά ψάξτε την αιτία. Κάθε ώρα αποσφαλμάτωσης στην παραγωγή είναι ώρα χωρίς παραγγελίες. Όταν επανέλθει, συγκρίνετε τις δύο εκδόσεις στο staging.

Οι πιο συχνές αιτίες έχουν δικούς τους οδηγούς: πέντε τρόποι που ένα deploy στο Magento χαλάει το checkout (static content, caches, ενημερώσεις modules, διαφορές ρυθμίσεων) και, για το WooCommerce, σύνολα στο checkout που σταματούν να ενημερώνονται. Αν αποτυγχάνει η πληρωμή, διαβάστε το έπεσε ο πάροχος πληρωμών ή φταίει το κατάστημα;.

Αφήστε τον έλεγχο να τρέχει για εσάς

Το MageSentinel κάνει αυτή τη δοκιμαστική αγορά σε τακτά διαστήματα, κάθε 30 λεπτά ή συχνότερα ανάλογα με το πακέτο, σε πραγματικό browser που ξέρει τα checkout του Magento και του WooCommerce, χωρίς script να συντηρείτε. Όταν αποτύχει ένα βήμα παίρνετε μία ειδοποίηση με το βήμα, κωδικό βλάβης, screenshot, την κονσόλα και το network log. Μετά από deploy, πατήστε Εκτέλεση τώρα στο monitor στο dashboard για έλεγχο αμέσως, χωρίς να περιμένετε τον επόμενο προγραμματισμένο.

Δείτε όλα όσα ελέγχει το MageSentinel, ή δοκιμάστε τώρα το δωρεάν checkout audit στο κατάστημά σας.

Συχνές ερωτήσεις

Πώς ξέρω αν το checkout δουλεύει μετά από ένα deploy;

Κάντε μια πλήρη δοκιμαστική αγορά σε ιδιωτικό παράθυρο αμέσως μετά το deploy: προϊόν, καλάθι, διεύθυνση, αποστολή και πληρωμή. Μετά αφήστε να τρέχει ένας προγραμματισμένος έλεγχος, γιατί κάποιες βλάβες φαίνονται μόνο όταν ξαναγεμίσουν οι caches ή τρέξουν cron jobs.

Φτάνει να φορτώνει η αρχική σελίδα μετά από deploy;

Όχι. Η αρχική μπορεί να φορτώνει ενώ το add to cart, η αποστολή ή η πληρωμή είναι χαλασμένα. Στα στοιχεία μας από 89 καταστήματα, το 77% των περιστατικών στο checkout έγινε ενώ το ίδιο το site λειτουργούσε.

Μπορώ να αυτοματοποιήσω τη δοκιμή του checkout μετά από κάθε deploy;

Ναι, με μια δοκιμή σε browser, όπως το Playwright, στο CI pipeline που φτάνει ως το βήμα της πληρωμής. Κρατήστε τη σύντομη και συντηρείτε τους selectors, ή χρησιμοποιήστε υπηρεσία παρακολούθησης που ήδη ξέρει το checkout.

Τι κάνω αν το checkout χαλάσει μετά από deploy;

Πρώτα rollback, ώστε οι πελάτες να μπορούν ξανά να αγοράσουν, και μετά σύγκριση των δύο εκδόσεων στο staging. Η αποσφαλμάτωση στην παραγωγή κοστίζει παραγγελίες κάθε ώρα.