Βόας είναι το μοτίβο σεναρίου .NET. Σας βοηθά να κάνετε καλύτερες αλληλεπιδράσεις για καλύτερο αυτοματισμό δοκιμών!
Αρχικά δημιούργησα το Boa Constrictor ξεκινώντας το 2018 ως τον ακρογωνιαίο λίθο του PrecisionLenderτου έργου αυτοματισμού δοκιμής από άκρο σε άκρο. Τον Οκτώβριο του 2020, η ομάδα μου και εγώ το κυκλοφορήσαμε ως έργο ανοιχτού κώδικα φιλοξενείται στο GitHub. Από τότε, το Πακέτο Boa Constrictor NuGet έχει ληφθεί πάνω από 44.000 φορές και η ομάδα μου και εγώ έχουμε μοιραστεί το έργο μέσω πολλαπλών ομιλιών συνεδρίων και διαδικτυακών σεμιναρίων. Είναι φοβερό να βλέπεις το έργο πραγματικά να απογειώνεται!
Δυστυχώς, το Boa Constrictor είχε πολύ μικρή ανάπτυξη τον περασμένο χρόνο. Η τελευταία έκδοση ήταν η έκδοση 2.0.0 τον Νοέμβριο του 2021. Τι συνέβη; Λοιπόν, πρώτα, άφησα την Q2 (την εταιρεία που απέκτησε την PrecisionLender) για να ενταχθώ στην Applitools, επομένως προσωπικά δεν δούλευα στο Boa Constrictor ως μέρος της καθημερινής μου δουλειάς. Δεύτερον, το Boa Constrictor δεν χρειαζόταν μεγάλη ανάπτυξη. Το βασικό μοτίβο του σεναρίου ήταν καλά εδραιωμένο και οι αλληλεπιδράσεις για το Selenium WebDriver και το RestSharp σκληρύνθηκαν με μάχη. Παρόλο που δεν κάναμε νέες κυκλοφορίες για ένα χρόνο, το έργο παρέμεινε ζωντανό και καλά. Η ομάδα στο Q2 εξακολουθεί να χρησιμοποιεί το Boa Constrictor ως μέρος χιλιάδων δοκιμών την ημέρα!
Ήρθε η ώρα για νέες εξελίξεις. Σήμερα, είμαι ενθουσιασμένος που ανακοινώνω τα σχέδιά μας για την επόμενη φάση του Boa Constrictor! Σε αυτό το άρθρο, θα μοιραστώ το όραμα που έχουμε οι βασικοί συντελεστές και εγώ για το έργο – λέγοντάς το προσωρινά ως „έκδοση 3“. Θα μοιραστούμε επίσης ένα πρόχειρο χρονοδιάγραμμα για την ανάπτυξη.
Ξεχωριστά πακέτα αλληλεπίδρασης
Επί του παρόντος, το Βόας Το πακέτο NuGet έχει τρία κύρια μέρη:
- Οι βασικές διεπαφές και οι κλάσεις του Μοτίβου Σεναρίου
- Αλληλεπιδράσεις για Selenium WebDriver
- Αλληλεπιδράσεις για RestSharp
Αυτή η δομή είναι βολική για ένα δοκιμαστικό έργο αυτοματισμού που χρησιμοποιεί Selenium και RestSharp, αλλά αναγκάζει τα έργα που δεν τα χρησιμοποιούν να αναλάβουν τις εξαρτήσεις τους. Τι γίνεται αν ένα έργο χρησιμοποιεί Θεατρικός συγγραφέας αντί για Σελήνιο, ή RestAssured.NET αντί για RestSharp; Τι γίνεται αν ένα έργο θέλει να κάνει διαφορετικά είδη αλληλεπιδράσεων, όπως αλληλεπιδράσεις με κινητά Ο Άπιος?
Στην καρδιά του, το Screenplay Pattern είναι ένα γενικό μοτίβο για κάθε είδους αλληλεπιδράσεις. Θεωρητικά, το μοτίβο του πυρήνα δεν πρέπει να ευνοεί κανένα συγκεκριμένο εργαλείο ή πακέτο. Οποιοσδήποτε θα πρέπει να μπορεί να εφαρμόσει βιβλιοθήκες αλληλεπίδρασης χρησιμοποιώντας το βασικό μοτίβο.
Με αυτό στο μυαλό, σκοπεύουμε να χωρίσουμε το ρεύμα Βόας συσκευασία σε τρία ξεχωριστά πακέτα, ένα για καθένα από τα υπάρχοντα μέρη. Με αυτόν τον τρόπο, ένα έργο μπορεί να δηλώσει εξαρτήσεις μόνο από τα μέρη του Boa Constrictor που χρειάζεται. Επίσης, μας δίνει τη δυνατότητα (και άλλους) να αναπτύξουμε νέα πακέτα για διαφορετικά είδη αλληλεπιδράσεων.
Υποστήριξη θεατρικών συγγραφέων
Ένα από τα νέα πακέτα αλληλεπίδρασης που σκοπεύουμε να δημιουργήσουμε είναι μια βιβλιοθήκη για αλληλεπιδράσεις θεατρικών συγγραφέων. Θεατρικός συγγραφέας είναι ένα φανταστικό νέο πλαίσιο δοκιμών ιστού από τη Microsoft. Παρέχει πολλά πλεονεκτήματα σε σχέση με το Selenium WebDriver, όπως ταχύτερη εκτέλεση, αυτόματη αναμονή και καταγραφή ιχνών.
Θέλουμε να δώσουμε στους ανθρώπους τη δυνατότητα να επιλέξουν μεταξύ Selenium WebDriver ή Playwright για τις αλληλεπιδράσεις τους στο περιβάλλον εργασίας web. Δεδομένου ότι ένα δοκιμαστικό έργο αυτοματισμού θα χρησιμοποιούσε μόνο ένα, και δεδομένου ότι θα μπορούσε να υπάρχει αλληλεπικάλυψη στα ονόματα και τους τύπους αλληλεπιδράσεων, ο διαχωρισμός των πακέτων αλληλεπίδρασης όπως περιγράφεται στην προηγούμενη ενότητα θα είναι προϋπόθεση για την ανάπτυξη υποστήριξης Playwright.
Ενδέχεται επίσης να προσπαθήσουμε να αναπτύξουμε έναν προσαρμογέα για τις αλληλεπιδράσεις του θεατρικού συγγραφέα που χρησιμοποιεί τις ίδιες διεπαφές με τις αλληλεπιδράσεις Selenium, έτσι ώστε οι άνθρωποι να μπορούν να αλλάξουν από το Selenium στο Playwright χωρίς να ξαναγράψουν τις αλληλεπιδράσεις τους.
Υποστήριξη Applitools
Ένα άλλο νέο πακέτο αλληλεπίδρασης που σκοπεύουμε να δημιουργήσουμε είναι μια βιβλιοθήκη για αλληλεπιδράσεις Applitools. Εργαλεία εφαρμογής είναι η κορυφαία πλατφόρμα οπτικών δοκιμών. Η οπτική δοκιμή εντοπίζει σφάλματα διεπαφής χρήστη που είναι δύσκολο να εντοπιστούν με παραδοσιακούς ισχυρισμούς, όπως στοιχεία που λείπουν, σπασμένο στυλ και επικαλυπτόμενο κείμενο. Ένα πακέτο Boa Constrictor για αλληλεπιδράσεις με το Applitools θα διευκόλυνε τη λήψη οπτικών στιγμιότυπων μαζί με τις αλληλεπιδράσεις του Selenium WebDriver. Θα ήταν επίσης ένα «προαιρετικό» χαρακτηριστικό, καθώς θα ήταν το δικό του πακέτο.
Υποστήριξη Shadow DOM
Shadow DOM είναι μια τεχνική για την ενθυλάκωση τμημάτων μιας ιστοσελίδας. Επιτρέπει σε ένα κρυφό δέντρο DOM να προσαρτηθεί σε ένα στοιχείο στο „κανονικό“ δέντρο DOM, έτσι ώστε διαφορετικά μέρη μεταξύ των δύο DOM να μην έρχονται σε σύγκρουση. Η χρήση του Shadow DOM έχει γίνει αρκετά διαδεδομένη στις εφαρμογές ιστού αυτές τις μέρες.
Σκοπεύουμε να προσθέσουμε υποστήριξη για αλληλεπιδράσεις σεληνίου για να τρυπήσουμε το σκιερό DOM. Το Selenium WebDriver απαιτεί επιπλέον κλήσεις για να τρυπήσει το σκιερό DOM. Δυστυχώς, οι αλληλεπιδράσεις Selenium του Boa Constrictor προς το παρόν δεν υποστηρίζουν τη σκιώδη διαδραστικότητα DOM. Πιθανότατα, θα προσθέσουμε νέες μεθόδους δημιουργίας για Εργασίες και Ερωτήσεις που βασίζονται σε σελήνιο που λαμβάνουν έναν εντοπιστή για το στοιχείο ρίζας σκιάς και, στη συνέχεια, θα ενημερώσουμε τις μεθόδους ενεργειών για να χειριστείτε το σκιώδες DOM, εάν είναι απαραίτητο.
Στόχοι .NET 7
Το κύριο έργο Boa Constrictor, το έργο δοκιμών μονάδας και το παράδειγμα έργου στοχεύουν όλα το .NET 5. Δυστυχώς, το NET 5 δεν υποστηρίζεται πλέον από τη Microsoft. Η τελευταία έκδοση είναι το .NET 7.
Σκοπεύουμε να προσθέσουμε στόχους .NET 7. Θα κάνουμε τα πακέτα βιβλιοθήκης να στοχεύουν .NET 7, .NET 5 (για συμβατότητα προς τα πίσω) και .NET Standard 2.0 (και πάλι, για συμβατότητα προς τα πίσω). Θα αλλάξουμε τη δοκιμή μονάδας και τα παραδείγματα έργων για να στοχεύσουμε αποκλειστικά το .NET 7. Στην πραγματικότητα, έχουμε ήδη κάνει αυτήν την αλλαγή έκδοση 2.0.2!
Ενημερώσεις εξάρτησης
Πολλές από τις εξαρτήσεις του Boa Constrictor έχουν κυκλοφορήσει νέες εκδόσεις τον περασμένο χρόνο. Το Dependabot του GitHub έχει επίσης επισημάνει ορισμένες ευπάθειες ασφαλείας. Ήρθε η ώρα να ενημερώσετε τις εκδόσεις εξάρτησης. Αυτή είναι η τυπική περιοδική συντήρηση για οποιοδήποτε έργο. Ήδη, έχουμε ενημερώσει τις εξαρτήσεις του Selenium WebDriver στην έκδοση 4.6.
Βελτιώσεις τεκμηρίωσης
Το Boa Constrictor έχει ένα ιστότοπος doc φιλοξενείται χρησιμοποιώντας Σελίδες GitHub. Καθώς κάνουμε τις αλλαγές που περιγράφονται παραπάνω, πρέπει επίσης να ενημερώσουμε την τεκμηρίωση για το έργο. Πιο συγκεκριμένα, θα χρειαστεί να ενημερώσουμε το σεμινάριο και το παράδειγμα του έργου μας, καθώς τα πακέτα θα είναι διαφορετικά και θα έχουμε υποστήριξη για περισσότερα είδη αλληλεπιδράσεων.
Ποιο είναι το χρονοδιάγραμμα;
Οι βασικοί συντελεστές και εγώ σκοπεύουμε να εφαρμόσουμε αυτές τις βελτιώσεις μέσα στους επόμενους τρεις μήνες:
- Σήμερα, μόλις κυκλοφορήσαμε δύο νέες εκδόσεις με σταδιακές αλλαγές: 2.0.1 και 2.0.2.
- Αυτή την εβδομάδα, ελπίζουμε να χωρίσουμε το υπάρχον πακέτο σε τρία, το οποίο σκοπεύουμε να κυκλοφορήσουμε ως έκδοση 3.0.
- Τον Δεκέμβριο θα ανανεώσουμε το Ζητήματα GitHub για το έργο.
- Τον Ιανουάριο, οι βασικοί συντελεστές και εγώ θα διοργανώσουμε ένα αυτοπρόσωπο hackathon (ένα „Contrictathon“) στο Cary, NC.
Υπάρχει πολλή δουλειά μπροστά μας, και θα θέλαμε να συμμετάσχετε μαζί μας. Ελέγξτε το Αποθετήριο GitHubδιαβάστε μας συνεισφέροντας οδηγόςκαι γίνετε μέλος μας Διακομιστής Discord!