Merken

Ambitious Capybara

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
ch and and and and put many of our tears and the continuity about ambitious capybara this talk is
about US some very special people have been unemployed for most of the time I was working on the stock for the past few months and so I don't have any actual companies that I'm sponsored by and sediments brought to you by these
restaurants in the Boston area that would let me sit in the restaurant like 6 hours a day coding is is getting all of the Old City home kind of like the even with all the snow and having it at some point additionally like to give a huge things is set at the Boston you rigor and I give them
a fruitless sort of early version of this talk the miracle on the feedback on company also dismantle the also bitterly community for encouraging people to talk and encourage you to look at their voices out there so I'm I would be that I would be here today presenting for the for them so have a very deep compassion that wanna tell you all that's it they feel awkward just so would of the projects I worked on in in various of Ruby on Rails projects but in love with capping
and maybe this a scene the with the number of times I've seen developers going to like feature file we like slump over dislikes systolic with what's going on here what is this like this is test couldn't even like old production code on is the number of times they've been kind of all procedures have very little faith in sort of integration tested elites you know some bad experiences some complexity the extremes in the past but at every I would all other projects really integration test qualities sort of slit in favor of sort of the more unit tested a sort of dealing with the burden of test that would fail every now and then the test of you do have a lot of confidence and so you have the 3 big gap and sort of always like cancer is featured in the break something else in the application is so my goal today is to sort of distort that for anyone in the audiences to give you the sort of tips and tricks at at the back your co-workers your friends to sort of reestablish their confidence because we carry bar 1st came out sort of change the game and what the kind of a ambitious applications we can build generals and in general any sort of real based framework or not uh at this at this point and so did the ability to to test JavaScript to make assertions without having the couple attests to specific parts of the diamond how'd it's about but I think that it has been a significant significant contributed or today and some of the kind of applications we see other that are built by rather sort of inspires building create but a bigger and better things so this sort out with some little known facts about happy workers candy bar or the high high do
cost 100 cares religions that South America but in doing research for this talk I discovered the pronunciation of the name is under heavy debate at her survival pronounces Cappy Barbara's capping bearer but it's still up for debate I've lost some friends over this some
very advanced facts about capybaras is there some aquatic and I think that makes sense as happy with Terry bars like with the jet because web Ratso has traversed the Internet to use under water on the control over various mini 25 acres and to me that means that they are capable of handling very large the applications and diverse than the animals and a lot of people have them as pets so it's it's a very approachable framework for framework tools so if you've had a bad experience of hope to encourage you to check it out again so I like to talk about balancing act that I encounter a lot between readability maintainability performance and I find that this is sort of the core of what it is silly bill suffer project to about sort of how readable the product is know how user can anyone not get into it and understand what's going on how maintainable is that you know can someone come in and using each the changes without compromising the rest of the application and is all perform very well on some makes it's sort of every few that make readability maintainability a kind of the same thing that examples that I can examples that the you know a very readable DSL at the rails rather it makes a lot of sets but if you go in with and of the head of like looked to the complexity required for but maintained a nice DSL so that it's really you know do there's a lot of overhead to that and then on the other side of the Senate Indian every maintainable structural composed code but is still very difficult to like getting to even notice what will structure there's still a high learning curve yeah it so then ideals is you have the right in the center it when it comes to integration tests attacked an infered just below the center that is my spot for like all performance later more interested sort but my test serving as documentation that either a stakeholder could some some the use or gene developer or you know stuff a senior developer resins seats in the current in in a while so how would I described the sinister captive wire so readability means you years future tests written as user stories that sort sort of but going back to the days of cucumber as a feature files you want me something a stakeholder could read you want to be sort of clear of of as many technical details as possible even though it's code you want to use you know but live in that would the essence of late very readable code for maintainability what of feature tested in the would grow easily be refactored as a features and you put in your product grows and the performance you what fast feedback either on UCI server of value chain if any changes broke some other ancillary part of a project or when Eritrea and a will feature and you wanna get we would have fast the bag to sort of sit there for winning for things to be worth waiting for things to fail so with the ball for 2 days to go through each 1 of these sort of describe sort of 80 patterns and best practices that i've uh developed in the past years that have helped give me confidence in a lot of excitement for any future tests so
readability the biggest safe readability is the same thing there was a direct cucumber avoid any what Ross electors and features specs as much as possible especially CSS classes and I say especially CSS classes because they are I like to delineate CSS classes did is it surely used for styling and the biggest risk when sort of combining the 2 is that leveraging CSS classes you either as a test set and as a styling in USA styling is that year eventually more likely to sort of overrun each other that if you have separate teams and designers shaving CSS classes and refactoring the marker on if they change the CSS classes accidently break the the the tests may be in several different places the other thing is the cabbie body cell works really well when I use that operational semantics and I'll go over that moreover that uh and this this is the form DSL this means having labels of all your inputs up properly marked up last is you know you can the summaries to is that the users are described as something of a user could actually make sense of so to go over inabilitly readability in 1st case the cyclic this quick uh feature test so in here this is this is a very simple sign and has that uh creates a user this is the sign in page and then fills in a assignment form those are they like I wanna call out here is the fact that we're using the the input ideas to sign in I don't think this is very human-readable healthier makes sense in the respective users for it has a look into the dark and find the element that has that matching ID and set the value of and it's also a a big part of the don't go this is also not very accessible and so the elastic look at why that is so if you look at the of the template for this that's this possible form for 2 inputs it by you know and password was see they were specifying label false and that sort of a common pattern Oceana analyze these placeholders in favor of labels and not only is this making a few test sort of less readable make maybe more brittle to uh changes in model meaning uh column in which are less likely to we like it happened that are potentially so i itself is also not very accessible steer limiting yourself silicon number users you maybe to pet pending on screen readers for sisters sisters devices to user application so maybe an easy way around this is a set of removing like the label will will hide it from from view then the labels on the page Cappy Bach phi and find the the corresponding label with this text value that's associated with that and in our test passes great when they threw curveball let's make this a job as test that actually using a JavaScript I driver which is a more fully fledged browser under the hood that will behave in more slowly the how a user's browser would we do this the test fails this is because capybara body defaults that since version 2 2 . 0 2 ignoring any any hidden elements on the page and going back to the accessibility part that's how you do any users through a reason like the screen reader also it's the page there will be what a fine of the input birth Curie readable understandable description of that and but when they encounter so a nice alternative to this is uh using a special sort of hack CSS hack to make the labeled not appear on the pages so pure visible to browsers both screening design cabin but in a job regret rules will see it on this accessible high class I get from is essentially these declarations and they get it from this uh best mix website read it discusses various ways of making content hand annotated so accessible to strangers there's an arm or have minutes available leader for people to do so we did this in a test pass and so you may be thinking all of those it's very simple kind of plain example but it gets were significantly more complicated when you think about any application that's using the accepts this at tributes or on any application in any other application that may not be built on roses isn't happy think and and so forth were presented that'll tunnels uh using happy bar for testing so even though this examples pretty simple I have seen a lot worse examples were people developed developed helper methods in the test sort of generate the dumb idea that would be associated with like XSS adapt as estimates form and put in this is like a complete mess is you can't really tell what's going on a word is it what it's representing it at some point you you're dealing with all those cognitive overhead of figuring out what this thing on the pages of just saying 0 that's the input for the the expiration date so Nextel and move on to this other future test this is implementing a I a search for users in Europe uh contacts being able to search by birth date and is using a query uh calendar pica so but it requires Javascript and going a note that were leaving out the functionality of actually interacting with a date picker for later we will fill that out I just wondered what will will slowly get there have to reduce some of the current issues with this feature test but to get you on the same page as like what we're seeing on the page at the little screenshot
it yeah yeah yeah yeah His that's effectively the behavior that will will be wanting to test if it so so back test we see we have these 2 sort of based on our premises earlier this 2 violations in our tests are ready worry a using a Rossi of CSS class in order to use find the button to open the calendar and I have to manually click it the other is reusing this sort of a complex that is like a all CSS selected as server about content on the page or what you are under sensors like intuitive lead to significantly more overhead in terms of understanding the spanking you crazy things with all we could also equally do capybara bar a much more readable way in your fellow developers and up stakeholders will thank you so list tackle was 1st what how do we make this easier like is there any way to use of oxygen but they for this work if we pass a CSS classical but unfortunately not at do the the if you dig deep enough you can find out what's what the allowed values are for that but you did it all the way down to the XPath gender cadaver bar depends on which is how those all its queries for finding elements in the DOM if you go all the way down you find that there's been X has the signal button method that takes in located on and here you can see the locator can any 1 of the buttons IDE it's a value or its title attribute is a title attribute is that is a pretty simple semantic way the markable but if has no implicit texts in so what we can do with the market for a are the they pick input is ad title attributes to the buttons that are used to hide of open or close or reset the the calendar so as we had those we can changes vector to read much more nicely re much work for me next the strand break apart this is all so selected we're using the contains a filter the check 1st searches almost that contain the word John and them look at the bar provides an option for this already with any of the have CSS have selector and find methods you can pass a text option it will get into a bit more as to how you can find out what all those options are on slows quickly this change that to use the text option great notice that the deal with the way to get around the CSS plus so if you look at that marker what hope can we really use here other than the either those tag name of the owner or any CSS classes orders during a slightly too vague like has Content Query which sort of can result fall of false positives for the checks the entire page of other propose a convention I've found to be very useful for you uh it at its core and additional state yet actress inherited sort has some data private application for which there are no appropriate action elements so this is a good fit we there's no real there's a really good like Test hooker like existing HTML markup that sort this meaningful 1st use of find the element on the page so there or not there or properties about it so let's add these 2 custom selective so cabbie body can add your own custom selectors and define whatever XPath a CSS you want to use to like you want to reuse for that selecting so here adding to data batteries data collection in data resource so we can markup markup are content with sort of data resource equal search result inserted the page using uh using I have selected you know find the model only put in the name of the element search result since that looks like a little bit verbose let's define some helpers work around that and then to make it even easier much more sort of readable on a test of what the so metaprogram some other helpers on top of that so effectively and defining it's similar to a sort of and inspire a candy bar and defining a wrappers around on the selectors it user-defined such as selectors the of select on the field then defining um methods to you assert that that that alone is there on the page so this is the same as sort of our select a value from the label IDE or other property of a select only the same as saying that he should have to select would all label ID label ID with of specific value and then of providing a methods for easier re-use de of the test if you're less verbose so add this data actually to my marker yeah and now can update my tested in this but I think this new read significantly better than but it did before the benefits are we the coupled CSS from a protest took on and we can also use the stairs a hoax within are application in JavaScript as well you can imagine sort of querying for a collection of elements using data collection and the filtering within that that collection for data Resources of elements with the actually data resources so not so in the data sort of day in a bit deeper that's not intuitive thing to do with capybara it this is what a date picker looks like
so in order to interact with this in order to change the date and pick 1 will want to be able to do what to change the month and the year the selects it and then from from their once to surrender we want to click on the appropriate date in the right table solved so signal to the market to see we have to work with to see how you know whether there's a label idea in a match that we should use into on the market and interactive that with encountered by yeah so the header
has to select elements they have no idea no name and uh no labels associated with them so the default use all methods select blocked from block will work for us
additionally the anchor tags that a dis include a number i in the numbers are guaranteed to be unique because if we look back we can see that the
2 ones in the calendar or to thirties in the calendar so you can be guaranteed that will be thinking the right 1 which which reflect the 1st a last 1 so now I'd like to sort of dig dig a bit
deeper in the cat happy bars internals look at how it manages to build this really affluent DSL so it introduces
if yeah if you're familiar with it already capybara element so whenever you run a find query it we're getting back in return is a candy bar elements it's a wrapper around the dominant moment the representing and provides an interface for getting at tributes for interacting with in certain ways of its of of form input uh and all did methods were familiar with the implemented in terms of these lower level of primitives so Francis click button is defined distance is defined as the sweat finds a button with the locator and options they provide to it and clicks on a seasonally using our capybara elements click method which simulates the click base in the driver to using so let's use cadaver elements to interact with the data so for the year for interacting with the
year will check the CSS classes used to select that you I dashed the picture year that option we want what we want to find the option within that select and users select option method to tell that those it's cancer like I'm the 1 that's selective area we do the same for the month with us the different that we to get the value in different selected and then fit 3rd picking the date we find this required some digging into sort of what you need know what way you need the query of an anchor in the table below you want that 8 and anchor tag with UIC the fault that is you parity 2nd day you're very secondary just means it's on a date in the calendar that's like the next with the previous month and then I will match the first one that comes up we matches because you can imagine getting in in use match was Cabral throw an error for for picking the 1st little kids still unambiguous matter is is also the 10th 11th the top and so forth so now that we have these other methods was that the minute test so now if
filled that that functionality for filling interacting with the Philly at the detector the problem this is the book poly begin polyandry during this elsewhere in our tests and it's likely to use other forms it's not the greatest leader in 1 place that's especially for how convoluted in specific it is to a to the j Creedy pica so let's extract Hopper method and then extract help among models with that society and the backup from were doing is always certainly Tuesday method which has a similar signature to the cabin bars us select method it takes the time step and a from attributed uh that should indicate the label of the or syntax then the input that that's associated to the thicker and then effectively we just extract all the methods that all those calls into a the model which we conclude in our spec copper configuration last and I think it's good whenever you add to this custom functionality that you had an additional check to make sure it's working it in this case 1st search we do a full page reload you wanna make sure that the value we introduce 2 on the page and the page loads flows add an assertion that the page has a date picker and with the right value that we initially and so I'm going down this path asserted introduce serve another sort of lower level at aspect of cap that I can really help to clean up a lot of your tests and avoid using tests avoid using hard-coded selectors the have deep inputs takes takes the value of label text finds a value formats in a way that's a predetermined and then looks for a a a field with the right label text the right value that is disabled because has received a picture we what the user to accidently type into the date field and change the day and submit an invalid value that will parts i it I was this is like kind of a surprise to me I just randomly try this 1 day and it worked in answer to digging like where does this come from 1 of the options other available and this comes from uh candy bar selected object can be biased like here's what we added earlier when we defined our our custom models all men model selectors of stores internally and you can has an entire idea sulfur we aim modify them with different options so it's a little bit small you can see on the outlines defining a disabled option defaults to false Boolean on and how to evaluate a when when evaluating the XPath so it would then 10
party next into performance sort of how
you make a castle that faster had you will get get city quicker feedback so that a big way to get a lot of women out of a big performance when this user within helper with an opera scopes Neapolitan still multiple assertions in the same to the same part of the Don that you're working with the for visiting but it avoids searching through the state so imagine you're making assertions about a emo you've open that's that rendered at the bottom of the page if you just make the same assertions over and over without stopping them near Turkey at every call that interact with an input making assertions starts at the top of the document introvert goes all the way down of the for the so for
example we've it an address stage restricted feature 30 L. address elements using sort of the pattern established earlier we cook about address that opens the modal each 1 of these calls sits at the very top of the page our models at the bottom of page we can make it a bit more proper form embedding within helper so that each 1 of these calls starts within the modals and having to go past all the addresses and whatever else is at the top of the page there is a small caveat to with then they can be can be somewhat of a gotcha sometimes imagine if affinity a date picker and but the J. Craig date pica and finds itself at inserts itself at the end of the but just before the closing body tag so if a scoping within the modal dialog we train choose the date is going to throw candy bar element not found even though like opening attempting to open the day picker for work we can interact with because it's on a different part of the page and disposition on the part of the page were interacting with I dis is a this mention this is a node in case anyone sort of like gets stuck sees it working with a three-run insulin EM into Spain ahead on likewise start finding its is considered within another element another big when for our performance and I think also just in general for documentation especially a much larger apps is to your features spaces QA scripts but I think it's I think people bring a lot of sort of the unit testing methodology to feature tests with really apply like 1 tester habitat test sad path like another test a sad have another test for this but we found on that's really expensive a set that set up until the end of every feature testing pretty expensive especially for a large application the number of take Mr. cipher jobs you testarossa truncated tables at the end of every tester and additionally every year if if sign in a dual of convoluted process to get user login and on the user interacting with fewer than 5 times in a row of wealth of the maritimes spending actually testing you may be still spend more time doing set up for all testing testing so in this very Hall of attacks a single integration testament application of work done before and and it goes through a sort tries to bang out all the functionality that's available on that page all the edge cases for bugs to make sure that everything's covered in 1 run so spent time visiting the separate in creating user a dozen times visiting the sign and page dealing with the overhead every test on so like for instance I have said at the beginning again on the page I wanna go to on I start making assertions about an object the 3rd in the page and see if I can edit the 2nd case letter that adding it to make sure that it correctly update of pizza the page I ensure within like the formed add something the element to disable MH apply validations run I check of the forms of data for the 1 that when I submit it and sort of going through this long Monday was sort of anarchy like the liberal with what you do on on the page and this sure well what well documented and that's for a lot of these sort of relatives of making sure you testers redoubles possible come in handy because you can do these large form of integration testing having the very easy to understand if you have to decide code comments like this is really weird be doing this test that is to the sort of check this weird educates and that's for 4 I think that's perfectly fine so in advance use of
a so they really call that kind are there and you will work in some services to applications is that you can have a positive or a capybara window Senior visiting to from the different parts of the same sort of capping bursts of session this is great for testing at service-oriented applications or maybe Klein said applications where you have a acquired set at 1 repository or a different folder in the same repository than the server that's running the server does even need to be rails or a new anything really based on none of it as I think this is a quick example of this imagine ever uh feature tests have you know if the processes running capybara bar is linked to either the Python application is the API this CMS that is the the the sir management at on undiscerning this as a process on its own business and said it's process of you don't see I a locally my machine which of those 2 processes are running I've been configure such that the worry about on these we hard-coded or freedom uh demonstrative presses reading deceiving that way of I can open windows to each of these uptake each of these applications using window opened by the window open by just sort of went commands and opens a window and the hand you passes you handle to it then using within window you can interact with that 1 is this test and visiting the CMS that in creating a product with the name through the muscle itself was a sort of just sort of implementation details on the model number the store window on visiting the BCP Ireland making sure that product exist so this theory testing that from a CMS concern and as an admin create a product enters details and then all the process the group that's involves moving to another database in making it appear in the API and properly when you that's all working to see a couple lines of code and some some initial set up then I go back to the CMS that I mark the product is out of stock you go back to the UN store at make sure that it's not visible anymore so this is sort of an easy example of you if if your goal is us away applies said application with a separation of concerns you can still use cabbie bottom sort of make sure everything's coming together correctly and the nice thing is this is all live on its own repository with its own configurations seller on this what we don't have the work done in a previous company and it was a pretty have that sort of documentation of everything on so that so that there is there have thinking free time
um my mind all along this all on and on and on all alone or more
Vorlesung/Konferenz
Analytische Fortsetzung
Rückkopplung
Ruby on Rails
Punkt
Flächeninhalt
Zirkel <Instrument>
Versionsverwaltung
Codierung
Vorlesung/Konferenz
Projektive Ebene
Innerer Punkt
Quick-Sort
Punkt
Mathematisierung
Annulator
Zahlenbereich
Kartesische Koordinaten
Komplex <Algebra>
Framework <Informatik>
Computeranimation
Demoszene <Programmierung>
Einheit <Mathematik>
Bereichsschätzung
Spieltheorie
Kontrollstruktur
Softwareentwickler
Ereignisdatenanalyse
Softwaretest
Universal product code
Elektronische Publikation
Quick-Sort
Algorithmische Programmiersprache
Integral
Rhombus <Mathematik>
Mereologie
Verzerrungstensor
Projektive Ebene
Extreme programming
Punkt
Browser
Versionsverwaltung
Summengleichung
Kartesische Koordinaten
Element <Mathematik>
Komplex <Algebra>
Login
Computeranimation
Formale Semantik
Internetworking
Homepage
Deskriptive Statistik
Font
Prozess <Informatik>
Vorzeichen <Mathematik>
Freier Parameter
Mustersprache
Mixed Reality
Vorlesung/Konferenz
Hacker
Kurvenanpassung
Default
Cliquenweite
Softwaretest
Nichtlinearer Operator
Lineares Funktional
Softwareentwickler
Sichtenkonzept
Freier Parameter
Template
Abfrage
Vorzeichen <Mathematik>
Ideal <Mathematik>
Biprodukt
Ein-Ausgabe
Arithmetisches Mittel
Softwarewartung
Verkettung <Informatik>
Menge
Einheit <Mathematik>
Rechter Winkel
Ein-Ausgabe
Deklarative Programmiersprache
Windkanal
Server
Projektive Ebene
Overhead <Kommunikationstechnik>
Message-Passing
Web Site
Beschreibungssprache
Wasserdampftafel
Klasse <Mathematik>
Mathematisierung
Virtuelle Maschine
Zellularer Automat
Zahlenbereich
E-Mail
Framework <Informatik>
Code
Homepage
Benutzerbeteiligung
Bildschirmmaske
Informationsmodellierung
Bereichsschätzung
Äußere Algebra eines Moduls
Passwort
Softwareentwickler
Cross-site scripting
Touchscreen
Trennungsaxiom
Schätzwert
Fehlermeldung
Elektronische Publikation
Schlussregel
Objektklasse
Quick-Sort
Integral
Druckertreiber
Mereologie
Gamecontroller
Speicherabzug
Wort <Informatik>
Zeitzone
Resultante
Offene Menge
Bit
Konfiguration <Informatik>
Beschreibungssprache
Kartesische Koordinaten
Oval
Element <Mathematik>
Komplex <Algebra>
Homepage
Spezialrechner
Kontrollstruktur
Vorlesung/Konferenz
E-Mail
Softwaretest
Umwandlungsenthalpie
Addition
Kategorie <Mathematik>
Element <Gruppentheorie>
Klassische Physik
Abfrage
Ein-Ausgabe
Hoax
Konfiguration <Informatik>
Datenfeld
Geschlecht <Mathematik>
ATM
Ein-Ausgabe
Server
URL
Ordnung <Mathematik>
Overhead <Kommunikationstechnik>
Programmierumgebung
Fitnessfunktion
Lesen <Datenverarbeitung>
Aggregatzustand
Tabelle <Informatik>
Ortsoperator
Gruppenoperation
Klasse <Mathematik>
Mathematisierung
Term
Homepage
Informationsmodellierung
Inhalt <Mathematik>
Softwareentwickler
Modallogik
Meta-Tag
Modul
Attributierte Grammatik
Elektronische Publikation
Matching <Graphentheorie>
Mathematisierung
Mailing-Liste
Vektorraum
Gerade
Quick-Sort
Differenzkern
Attributierte Grammatik
Speicherabzug
Wort <Informatik>
Zeitzone
Bit
Zahlenbereich
p-Block
Element <Mathematik>
Quick-Sort
Computeranimation
Eins
Rechter Winkel
Einheit <Mathematik>
Primzahlzwillinge
Vorlesung/Konferenz
Default
Ereignishorizont
Konfiguration <Informatik>
Momentenproblem
Abfrage
Element <Mathematik>
Ein-Ausgabe
Term
Computeranimation
Konfiguration <Informatik>
Übergang
Bildschirmmaske
Druckertreiber
Wrapper <Programmierung>
Vorlesung/Konferenz
Abstand
Primitive <Informatik>
URL
Computerunterstützte Übersetzung
URL
Schnittstelle
Stellenring
Subtraktion
Bit
Konfiguration <Informatik>
Klasse <Mathematik>
Datensicherung
Computeranimation
Homepage
Übergang
Homepage
Bildschirmmaske
Informationsmodellierung
Trennschärfe <Statistik>
Datentyp
Vorlesung/Konferenz
Speicher <Informatik>
Ganze Funktion
Default
Hilfesystem
Softwaretest
Lineares Funktional
Matching <Graphentheorie>
Systemaufruf
Abfrage
Vorzeichen <Mathematik>
Ein-Ausgabe
Elektronische Unterschrift
Quick-Sort
Kugelkappe
Konfiguration <Informatik>
Objekt <Kategorie>
Datenfeld
Flächeninhalt
Einheit <Mathematik>
Gerade Zahl
Rechter Winkel
Last
ATM
Mereologie
Dateiformat
Technische Optik
Zeitzone
Tabelle <Informatik>
Mereologie
Mereologie
Minimum
Systemaufruf
Vorlesung/Konferenz
Ein-Ausgabe
Quick-Sort
Computeranimation
Aggregatzustand
Homepage
Domain <Netzwerk>
Einfügungsdämpfung
Bit
Merkmalsraum
Komponententest
Prozess <Physik>
Dokumentenserver
Desintegration <Mathematik>
Adressraum
Gruppenkeim
Kartesische Koordinaten
Aggregatzustand
Element <Mathematik>
Login
Computeranimation
Homepage
Datenmanagement
Vorzeichen <Mathematik>
Prozess <Informatik>
Code
Bildschirmfenster
Mustersprache
Minimum
Skript <Programm>
Vorlesung/Konferenz
Gerade
Serviceorientierte Architektur
Softwaretest
App <Programm>
Lineares Funktional
Topologische Einbettung
Dokumentenserver
Datenhaltung
Element <Gruppentheorie>
Systemaufruf
Biprodukt
Konfiguration <Informatik>
Entscheidungstheorie
Serviceorientierte Architektur
Dienst <Informatik>
Chiffrierung
Menge
Client
Server
Overhead <Kommunikationstechnik>
Instantiierung
Tabelle <Informatik>
Multiplikation
Implementierung
Abgeschlossene Menge
Zahlenbereich
Physikalische Theorie
Code
Homepage
Virtuelle Maschine
Informationsmodellierung
Bildschirmmaske
Knotenmenge
Datensatz
Adressraum
Produkt <Mathematik>
Canadian Mathematical Society
Skript <Programm>
Affiner Raum
Strom <Mathematik>
Speicher <Informatik>
Modallogik
Trennungsaxiom
Relativitätstheorie
Systemverwaltung
Validität
Mathematisierung
Einfache Genauigkeit
Content Management
Quick-Sort
Integral
Programmfehler
Objekt <Kategorie>
Modallogik
Offene Menge
Mereologie
Ruhmasse
Eigentliche Abbildung
Videokonferenz
Verhandlungs-Informationssystem
Vorlesung/Konferenz

Metadaten

Formale Metadaten

Titel Ambitious Capybara
Serientitel RailsConf 2015
Teil 50
Anzahl der Teile 94
Autor Gutierrez, Eduardo
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/30638
Herausgeber Confreaks, LLC
Erscheinungsjahr 2015
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Capybara has allowed us to build complex and ambitious applications with the confidence that everything comes together in the user experience we're targeting. As the capabilities of the web have grown, interactions and behavior in our applications have become more complex and harder to test. Our tests become coupled to CSS selectors, fail intermittently, take longer and our confidence dwindles. In this talk, I'll go over best practices for working with a large Capybara test suite and dig into APIs and options we can use to handle complex apps such as a chat app not written in Ruby.

Ähnliche Filme

Loading...