By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
7 | TYPO | Cucumber misspelled, Groovy misspelled. | 2014-09-16 | Thanks | |
19 | ERROR | Twice in last paragraph on pg 19 you refer to a method’s local variable as an instance variable. It is wrong to refer to a local variable as instance variables. You state: and see code in the link first_taste/05/step_definitions/CheckoutSteps.java bananaPrice is not defined as an instance variable. There are no instance variables in that code. The variable is local to the method. | 2014-09-16 | Good spot - the code had changed since the text was written. I've just removed that paragraph. | |
13 | SUGGEST | Cucmber’s output is highlighted with colors that do not display accurately in Windows which displays control characters like ‘33m’ instead of colors, for instance: The cucumber wiki addresses colors for Windows in the Console-Colours portion of the wiki. I installed ANSICON as suggested including adding it to the PATH in my command window and then running ANSICON. This corrected the display of colors in Cucumber’s output | 2014-09-16 | I've made a few edits to make the chapter First Taste more friendly to Windows users, including a sidebar that covers the control characters. Ansicon will be convered in the appendix "Installing" | |
49 | OK | In the section “Creating a Step Definition”, in the second paragraph (ignoring the @Given code fragment) which starts You’ll typically put several step definitions like“…, the paragraph ends with a missing cross ref which reads: ”see the (as yet) In the epub this missing ref reads "missing cross reference target…)) | 2014-10-02 | This section is in the (as yet unpublished) chapter Controlling Cucumber. The cross reference will come good when that gets released | |
128 | TYPO |
| 2014-10-17 | ||
127 | SUGGEST | It talks about moving the $ into the capture group within the @Given annotation but it doesn’t mention anything about updating the MoneyConverter class. There probably should be code showing the fix to the MoneyConverter class even if most readers would figure out the problem. | 2014-10-27 | ||
144 | TYPO | “Run ./cucumber now to see whether we have it trapped” should be “Run mvn clean test now to see whether we have it trapped” | 2014-10-17 | ||
145 | SUGGEST | The sample code shows adding the debit method to account and says that it’s fixed. However, it doesn’t mention adding the minus method to the Money class. Maybe I missed that being implemented in a different chapter but I didn’t see it as I was going through the book. I think the code to add minus to the Money class should be added just to keep the flow of the book consistent(the bookstops at pretty much every compilation error and shows the solution). | 2014-11-16 | Rather than talk about adding the minus() method, I've just gone back and added it from the beginning. | |
153 | TYPO |
| 2014-10-17 | ||
153 | SUGGEST | The parameters for the withdrawFrom method change from “int dollars” to “int amount”. It was pretty subtle and made it weird when I started following the code when implementing the AtmUserInterface class a couple pages later (my code still was using the dollars parameter and the code in the book was updated with the amount parameter…so for a minute I was wondering where did this amount parameter come from). Maybe mention the parameter name change or just keep the parameter names the same to make following the code flow a bit better. | 2014-10-27 | ||
156 | TYPO | The code on the previous page for AtmUserInterface uses the FirefoxDriver but the pom.xml adds a dependency to the chrome driver. I wasn’t sure which driver to use so I stuck with trying to use the ChromeDriver. Also, running the test using the driver doesn’t work. I’m getting a timeout error where it’s trying to talk to a service running on a random port on the local machine to get a status or something like that. Not sure what that is since I’m not really familiar with Selenium. | 2014-10-17 | I've removed the dependency on ChromeDriver, which was a spurious remnant of a previous version. \n \nMore information about the timeout would be appreciated - I can't replicate. | |
156 | SUGGEST | The note from Seb mentions checking browser and selenium driver versions if there are error messages being displayed. It would be nice if the book mentioned what selenium driver version and browser version they used so the reader could try to download those and follow with that instead of spending time trying to find out how to get selenium to work. | 2014-11-16 | ||
158 | TYPO | The code | 2014-10-17 | ||
162 | ERROR | When running the test with jetty server startup configuration, the test just hangs. I had to removed the server.join() call in the AtmServer start method and the test started working again. I’m not sure why that was the case. | 2014-10-17 | ||
163 | TYPO | The ids for the input and button elements (amount and withdraw) in the AtmServlet code do not match what the AtmUserInterface was previously written with the web driver (Amount and Withdraw…both capitalized) | 2014-10-17 | ||
167 | TYPO | “We covered the basics of Webbit applications” I think should be “We covered the basics of web applications”. | 2014-10-17 | ||
179 | TYPO | “public void stopServer()” should probably be “public void stopBackgroundThread()” | 2014-10-17 | ||
189 | TYPO | class Account implements Model should be class Account extends Model page 383 in epub for iBooks | 2014-10-17 | ||
383 | TYPO | class Account implements Model should be class Account extends Model | 2014-10-17 | ||
394 | SUGGEST | Tries to run mvn clean test but doesn’t say anything about setting up mysql locally. Now, it took me awhile googling all the things needed download mysql, setup the teller user, grant access to teller, and create the db. And now that I know, doing it again would be trivial. However, I think it would be nice to have those instructions so that readers won’t spend a hour or so trying to figure out how to set up MySQL correctly page is from epub version | 2014-11-16 | ||
416 | ERROR | forgot to mention removing the call to Base.rollbackTransaction() in reset hooks. The scenario will fail because of the trying to rollback a transaction when using truncation instead for clearing DB state. | 2014-10-17 | ||
46 | TYPO | we’ve been running >Cucmber< using | 2015-01-21 | ||
47 | SUGGEST | in order to have maven execute the tests, I found I needed to add a small Java class like the code below; you mention it later but I think you need it here so that readers can code and run along: import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) | A class like that is only needed to run the tests via JUnit. This part of the book is using Cucumber's CLI to find & execute the scenarios, so this class is not needed.... yet. We need it when we start using Maven/Junit in a few chapters time | ||
145 | TYPO | In the step below we’re still withdrawing int-dollars, not Money which the teller doesn’t understand yet: @When(“^I withdraw \\\\$(\\\\d+)$”) | 2015-01-26 | ||
145 | ERROR | […] Let’s see whether we’ve managed to fix the bug: Hooray, we did it! | 2015-01-26 | ||
159 | 145 | ERROR | (I mixed up pdf and book page numbers in the erratum, this one’s right:) […] Let’s see whether we’ve managed to fix the bug: Hooray, we did it! | 2015-01-26 | |
181 | TYPO | … the surface of it’s functionality => its | 2015-01-21 | ||
238 | TYPO | Choose a DI container and browse it’s documentation | 2015-01-21 | ||
238 | TYPO | Choose a DI container and browse it’s documentation | 2015-01-21 | ||
120 | ERROR |
| 2015-01-26 | ||
7 | TYPO | Where : What : 2. The “When” statement says “I sign up with an email address that has already registered” | |||
11 | TYPO | Where: Chapter 2, section “Understanding Our Goal”, paragraph 2. What: The paragraph says : “We have an incredible vision of what this checkout will one day power: a Something is not right here : “a traditional checkout till” | |||
132 | TYPO | In the $ShouldBeDispensed method at the top of the page the code contains | |||
53 | TYPO | In the Character Classes section, the first code sample contains \\\\$([01234567890]*) as the regex. I don’t believe you need the 0 at the start and the end of the list of digits. | |||
29 | 11 | TYPO | The footnote for installing the cucumber jvm now points to a dead link. Going to the link at the bottom of the page that I cannot include here redirects to a 404 error page | ||
161 | ERROR | Hope you can help. Not sure if this is a technical error or not. After updating AtmUserInterface.java, then I get a compile error. Detail below. Are you able to help. Please email me at wsinclair@indigocube.co.za for full description: java.lang.Error: Unresolved compilation problem: \tat support.KnowsTheDomain.getTeller(KnowsTheDomain.java:34) Here is knowsTheDomain import nicebank.Account; import org.openqa.selenium.firefox.FirefoxDriver; public class KnowsTheDomain { public Account getMyAccount() { return myAccount; public Teller getTeller() { return teller; public CashSlot getCashSlot() { return cashSlot; public EventFiringWebDriver getWebDriver() { return webDriver; Here is ATMUserInterface import org.openqa.selenium.By; import cucumber.api.java.After; import nicebank.Account; import hooks.ServerHooks; class AtmUserInterface implements Teller { private final EventFiringWebDriver webDriver; public AtmUserInterface(){ public void withdrawFrom(Account account, int dollars) { | |||
130 | TYPO | It is said that the method: | |||
132 | ERROR | in the step method definition it should be: instead of helper.getCashSlot().contents()); | |||
150 | ERROR | In AtmServer constructor, the server instance is initialized with hard-coded port value instead of taking it from the passed in parameter: | |||
130 | ERROR | At the top of the page, it says: @When(“^I withdraw \\\\$(\\\\d+)$”) This code uses an instance of the helper class from the next section, but we haven’t even written it yet. At this point it should just use the instance variable “myAccount” when passing the account into the teller.withdrawFrom() method. | |||
90 | TYPO | Page 89 states to generate step definition snippets and paste them into step_definitions/BoardSteps.java however pdf page 90 lists the file path as tic_tac_toe and the code snippet lists package as tic_tac_toe. this leads the code to be run to result in undefined status. It would be best to keep this in sync with earlier examples and keep this as step_definitions. | |||
155 | TYPO | When searching the element by ID, it should be in lower case: | |||
49 | ERROR | In nearly every sample project that I build using maven, I get an error “annotations are not supported in -source 1.3”. The error is always solved by adding this to my pom 1.6 Maybe you would consider updating the sample code. It’s possible I did not set up my maven correctly. But no instructions from the maven project or stack-overflow could solve it without adding a section to the pom file. BTW, I am using java version “1.7.0_91”. Thanks, Dave | |||
269 | TYPO | This is in Chapter 14. It should be cucumber.api.cli.Main It is currently cucumber.cli.Main | |||
4442 | ERROR | in ‘Using Hooks’ section, the book indicates to create a Hook class, but forgots to mention that we need to create that class in the glue package we specify when running cucumber scenario so the class can be found. | |||
156 | ERROR | Chapter 8. Support Code: Using Hooks: No mention is made of the fact that hook classes must be in the package tree defined by the Cucumber glue option. Place them anywhere else, and they won’t run. | |||
173 | ERROR | The finish() method listed uses a variable named “helper”. The text does not tell the reader what type “helper” is nor how to initialize it. | |||
172 | ERROR | The mvn clean test suggested on this page will not result, as claimed, in an image of the greeting page being saved. Instead the image will be blank. This is because AtmUserInterface instantiates its own EventFiringWebDriver. That results in a browser window being opened twice, the second one not addressing the greeting page (assuming you’ve already fixed AtmServer). Fixing this requires altering AtmUserInterface’s constructor to take an EventFiringWebDriver as an argument and initialize its webDriver field with it, and altering KnowsTheDomain to supply that EventFiringWebDriver. | |||
175 | ERROR | Apologies, wrong PDF page number on the prior submission… The mvn clean test suggested on this page will not result, as claimed, in an image of the greeting page being saved. Instead the image will be blank. This is because AtmUserInterface instantiates its own EventFiringWebDriver. That results in a browser window being opened twice, the second one not addressing the greeting page (assuming you’ve already fixed AtmServer). Fixing this requires altering AtmUserInterface’s constructor to take an EventFiringWebDriver as an argument and initialize its webDriver field with it, and altering KnowsTheDomain to supply that EventFiringWebDriver. | |||
174 | ERROR | For some reason the wrong PDF page number keeps showing up in the errata… Anyway, here goes one more time, with feeling: The mvn clean test suggested on this page will not result, as claimed, in an image of the greeting page being saved. Instead the image will be blank. This is because AtmUserInterface instantiates its own EventFiringWebDriver. That results in a browser window being opened twice, the second one not addressing the greeting page (assuming you’ve already fixed AtmServer). Fixing this requires altering AtmUserInterface’s constructor to take an EventFiringWebDriver as an argument and initialize its webDriver field with it, and altering KnowsTheDomain to supply that EventFiringWebDriver. | |||
56 | TYPO | First paragraph reads “That word is then passed to the method we named accountType in the second argument.” I believe you mean “That word is then passed to the iHaveDeposited$InMyAccount method in the second argument.” | |||
20 | TYPO | The link for footnote #3 goes to Pragmatic Bookshelf site with “No title for ‘sjrcuc’.” error. Link should be “srjcuc” instead of “sjrcuc” (‘r’ and ‘j’ are transposed). | |||
13 | ERROR | Not possible to execute cucumber as described: -rwxrw-r— 1 ejner ejner 335723 Aug 29 22:41 cucumber-core-2.0.0.jar* Also I tried Maven dependencies on those 4 artifacts, but always run into error ejner@ejner-GGS-Petit-Deluxe:~/.m2/repository/io/cucumber$ java -cp “cucumber-jvm/2.0.0/:tag-expressions/1.0.1/:gherkin-jvm-deps/1.0.4/:cucumber-jvm-deps/1.0.6/:cucumber-java/2.0.0/:gherkin/4.1.3/:cucumber-core/2.0.0/” cucumber.api.cli.Main -p pretty . | |||
13 | SUGGEST | There is a project on GitHub cucumber/cucumber-java-skeleton which worked for me, by running build.xml, | |||
162 | SUGGEST | At the top of the page, when you say “We have to share the same instance of the Selenium web driver between WebDriverHooks and AtmUserInterface”, I suggest that also you point out the need then to remove the webDriver.close(); call from AtmUserInterface.java. Leaving that line there will cause an error when trying to take the screenshot since the WebDriverHooks.java would try to use the webDriver that is now closed. | |||
134 | ERROR | @When(“^I withdraw \\\\$\\\\d+)$”) This throws an NPE because a cashSlot has not been instantiated yet. Quickest solution is to insert helper.getCashSlot(); before the helper.getTeller() ……… | |||
76 | ERROR | The class of cucumber.api.DataTable has been changed over to io.cucumber.datatable.DataTable. With this change, the raw method no longer exists. The expressive scenarios from folder 02 on will be taking in a List<List Was able to achieve the same results from page 77’s excercise using DataTable board instead of List<List |