Monday, April 15, 2019

Mob Programming Conference 2019 - A Comeback

Remember my joy last year when I got invited to the Mob Programming Conference 2018 as a moberator for the first time? Imagine my joy when Woody Zuill invited me back again for this year's conference! Truth be told, I wholeheartedly hoped for this opportunity and booked my flights for the preceding TestBash Brighton accordingly, allowing me to fly to Boston shortly afterwards.

So, here I was, back in Boston, seeing so many lovely people again, and getting to know many more. It was a wonderful experience. Here's a glimpse into what happened.

Arriving

When I learned that Lennart Fridén would be back on board, I was super happy. We met last year and had some great conversations together, already on the very first evening. This time we could continue, meeting for dinner on the evening for the conference. A wonderful way to get into conference spirit!

The Conference

The first day was kicked off by the amazing Linda Rising with her keynote "Experiments: the Good, the Bad, and the Beautiful". It's always a pleasure to listen to Linda's thoughtful and inspiring talks! She's a real master on stage, and a huge role model as well.
Afterwards it was my time to facilitate a mob session. This year I chose the topic of "Mob Exploratory Testing", evolving a workshop I gave both for another company on my last year's Testing Tour, as well as my own company just recently as a cross-team, cross-role, cross-location mob. It went well and also triggered many new ideas how to improve my mob sessions further. Mission accomplished!
After lunch it was time for a  lean coffee session. I found myself helping out as facilitator at a table full of co-workers. That really made me think how to encourage people better to spread out and learn from other people's experiences. I get why we prefer to stick together, and yet it feels like a missed opportunity at conferences. On the other hand: this experience proved again why a lean coffee session still makes total sense to have in your own company as well. People came from different teams and learned a lot about each other's challenges and solutions they had no idea about before.

For the afternoon I chose the mob session hold by Chris Lucian from Hunter Industries, where the "original" mob evolved. He introduced us to the "Mob Programming Roleplaying Game - A Powerful Learning Experience". It was developed by Willem Larsen and all material can be found on GitHub for people to give it a try themselves. What I really liked about it: the purpose is to show good behaviors in a mob and thus level up your mobbing skills.

The second day started with a great keynote by Karin Tenelius: "Learning from Self-Managing Organizations". What an impressive journey she is on for a long time now! Karin gathered lots of data why self-managing organizations area win-win for everyone. By the way: I loved the fact that both keynotes were given by strong, knowledgeable, inspiring women. True role models, again.
Next up I chose the mob session by Colin Snyder: "When The Mob Encounters 'The New'". He jumped in as replacement for Lisa Crispin and Stephen Vance who unfortunately could not make it to the conference and were dearly missed. I liked Colin's idea of learning something new together as I used this topic myself several times for mob sessions so far. Our little mob ended up in doing first steps in Pearl by doing a coding kata together. Paying nicely into my #CodeConfident challenge! ;-)

After lunch I was very tired, so I spontaneously decided to skip the open space and instead talk with Andrea Zuill and Lennart. What a wonderful, re-energizing and inspiring conversation! One thing that stuck with me after talking with Andrea, who is a children's book author and illustrator: Sometimes it takes a ton of sketches to get a character right. So draw many sketches quickly without trying to improve any of them; instead, instantly move to the next one. If sketches are too refined, they are not sketches anymore ;-) Wise advice and applicable to other areas of life as well.

The last session I chose was Scott Ford's "Mob Programming with Legacy Code". He used the Gilded Rose refactoring kata translated to many different languages by Emily Bache. A wonderful exercise I got first introduced to by Maaret Pyhäjärvi's awesome talk at Selenium Conf India 2018. Alternatively, check out her blog post "Exploring Gilded Rose".

The Social Side of Conferences

I learn a lot from the content shared at conferences in talks and workshops. I learn even more when doing things hands-on together with other people. That's not everything, however. Often I take the most things away from the socializing opportunities offered by or evolving around conferences. Like the evening reception after the first day. Great conversations throughout the evening!
After the conference ended, many of us joined for dinner and the evening was full of inspiring talks as well.

That not being all, the day after the conference, Lennart accompanied me on my sightseeing tour through Boston. Loved it! By the way, in case you'd like to see photos from my conference travels, I've just recently started my own Instagram account. It's private as of now, yet feel free to request access.

To 2020!

The 2019 edition of the Mob Programming Conference came to an end. Yet there are already plans for next year being made! And we know one thing already. We need more moberators, meaning people who facilitate mob sessions, so we could offer more smaller ones to make the conference even more focused on hands-on practicing and learning with each other. If you have mob experience and would be up for facilitating, feel free to reach out to Woody! Or alternatively, Lennart. Or me, as it seems. Time will tell ;-)

TestBash Brighton & Automation in Testing - A Full Week of Learning

About a week ago, I returned home from a full week of learning. I got selected to speak at Test Bash Brighton 2019, the mother of all TestBashes - feeling super honored! When I learned that Richard Bradshaw and Mark Winteringham offered their three day course "Automation in Testing" just before the conference, I decided to extend my stay by these days.

Automation In Testing

The first time I heard about this topic was by listening to Richard's talk back in 2015 at Agile Testing Days. I got intrigued, and joined Richard's and Mark's related tutorial day the year afterwards. I was super curious how their content evolved. And I did not regret it at all, to the contrary!

They gave the course for the tenth time and thus labeled it their version 1.0. Also, as we started on April 1, a nice little April's fools joke was included ;-)

Now, I don't want to spoil the contents of the course. I'd rather heavily recommend that you take it.

What I really liked was that the following things were in focus:
  • Testing and us as humans involved
  • The multiple ways how automation can help your testing
  • The manifold ways existing or self-built tools can help your testing
  • How to educate people back home
  • Many different hands-on exercises, learning and practicing together, in smaller and larger groups
The people-centered focus of the course was even greater as the participants were a wonderful group of kind people, eager to learn, open to collaborate. They made the course special!

Besides the actual content, I learned a lot about myself once more during the course. We had time to solve a problem on the second day. Our table's group worked very well together before, yet we stumbled in this challenge. Speaking for myself: I found myself pressured by the task at hand, especially by the limited time and the need to justify our decisions well at the end. I found myself not being able to make the jump from our great discussions on architecture and prioritization to actual implementation. I found myself a lot less confident in implementation than I would like to be. I found myself getting paralyzed by the fact that much of what we wanted to do existed already in the project, so what's the point of implementing it again. I found myself realizing the more stressed I am, the less I understand, also acoustically, the more solo I work, the less help I seek - the less I enjoy what I am doing. I found myself getting angry with myself. This was a real grounding experience. The good thing: The next day we found ourselves in different groups, getting a different problem to solve. And we thrived together! The whole table mobbed together, getting all tasks done by bringing all our knowledge, experience, observations and any other skill in. A wonderful experience! Now, all being said: if you have the chance, try it yourself.

The only downside of taking the course was that I missed the overlapping new conference TestBash Essentials. From what I heard from very experienced people, the talks were all super high quality and very welcome reminders of the basics we might have never got taught ourselves! Hope I can catch this new format next time.


TestBash Workshops

For the workshop day I chose two that I've wanted to attend for some time now. In Angie Jones' "Clean Coding Practices for Test Automation" workshop she guided us in refactoring a "smelly" automation project, sharing her wisdom of good practices and design patterns for automation throughout. It was great, well structured, easy to follow, giving time to practice and find the solution ourselves before discussing it. I really enjoyed it!
In the afternoon I joined Mark Winteringham's workshop "Approval Testing: Superpower Your Automation Feedback". I've heard of the approval testing approach for quite some time now, yet never got my hands on it to give it a try myself. The workshop gave me exactly this opportunity, and I was positively surprised by how easy and fast it was to add valid tests. Even though you had to run them at least once to approve the first snapshot. The workshop was well instructed and easy to follow along.
During both workshops, I worked solo. Not my preferred way of working, yet paying well into my #CodeConfident challenge. A personal achievement during Mark's workshop was that I was able to do all exercises quickly and offer my help for others!

TestBash Conference Day

The big day came, and I had the honor to open the conference! In my talk "Cross-team Pair Testing: Lessons of a Testing Traveler" I shared the lessons learned on my Testing Tour. I was overwhelmed by all the positive feedback I received afterwards, both in person and on Twitter! This really added to my confidence. As this if often dearly needed, I established a habit over the last conferences. To make my own achievements visible, I started to list all the feedback I received for myself. Whenever I am having a bad day, that's something to look back into. It really helps me to acknowledge that I indeed could provide value to these people. I am also always creating a Twitter moment and add all tweets to it. I normally don't share these, yet feel free to check it out my TestBash Brighton Twitter moment to see for yourself.
The greatest thing: With my talk I could inspire many other people to go on a testing tour themselves, or start pair testing with other testers at their company. The best feedback ever!
The rest of the day, I created sketchnotes of the talks again - I found I really enjoy this style of note taking during talks. I remember a lot more from the talks, and the community really welcomes me sharing them - so thank you Marianne Duijst once more for your huge inspiration!
When it comes to Marianne, who normally creates wonderful sketchnotes herself: this time she did the amazing endeavor of live blogging the talks. Check them out to get a lot more in-depth impressions of the talks!


TestBash Open Space

Saturday came, and it was the sixth day of learning in a row. I had to admit to myself that my brain did not work well anymore. So I've spent most of the open space sessions in the hallway, in conversations with other people. That re-energized again!
The one session that stood out for me personally was the last one where I joined Jay Harris being asked all things hacking and penetration testing. Absolutely informative, learning a bunch!

Relaxing and Looking Forward

The conference was over, and there were few people left. One of them was Melissa Eaden, and we chose to go sightseeing together. We had a lovely time! If you get the chance to, speak with Mel. She is simply amazing. Extremely knowledgeable, inspiring, and simply fun to be around with.
This conference was made by the community, the people. I loved the reunion with many wonderful beings, such as João ProençaPatrick Prill, Gil ZilberfeldGem HillClaire Reckless. It was great to meet people for the first time in real life, like Parveen Khan. And it's always great to meet many new people as well, many of them on their first testing conference like Marissa or Georgia Bloyce!
I had a very great time, and am already looking forward to returning to the UK for my next TestBash - as I got selected to speak at TestBash Manchester as well! For this I will share my journey and lessons learned from my challenge of becoming #CodeConfident. This will be a brand-new presentation - so Patrick, I need you and looking forward to receiving your wonderful feedback! :-)

Friday, April 12, 2019

Calling for Diversity - Tickets for the German Testing Day

The German Testing Day 2019 will take place on June 7th in Frankfurt am Main, preceded by a pre-conference event with workshops the day before. Check out the awesome complete conference program or the one filtered for English talks.

This year I have the honor of giving the opening keynote, and by doing so I have the following conference tickets to give away:
  • two tickets including travel assistance, and
  • one ticket without travel assistance.
These tickets are intended to increase the diversity of the German Testing Day and to enable people to attend the event who would not be able to come without support. Following Cassandra H. Leung’s great example, here’s how it goes.

How to Apply

Simply let us know why you’d like to attend the German Testing Day this year but cannot come on your own. Maybe you are just starting your career in software testing. Maybe you don’t receive financial support from your employer. Whatever it is, tell us your story!

Please send an email to info[at]germantestingday.info with the subject “GTD 2019 DIVERSITY”.

We are accepting applications from today, Friday, April 12th, until 15:00 CEST on Sunday, May 5th - so go for it and send it in now!

The lucky ones will be contacted shortly after the submission deadline. We’re looking forward to reading your stories. Good luck!

Interested in the finer details? Continue to read.

Who Are We

“We” are Thomas Rinke and Lisi Hocke in particular, responsible for the selection process, and the German Testing Day organizer group in general.

What Is Included and What Not

Tickets with travel assistance. These tickets will provide entry to both the pre-conference sessions and the conference day. Furthermore you will receive up to two hotel nights in one of the conference hotels (which will be booked by the organizers). Travel costs will be reimbursed up to a maximum of 250,- Euro after providing receipts.

Ticket(s) without travel assistance. Theses tickets will provide entry to both the pre-conference sessions and the conference day. Travel and accommodation is not provided, reimbursed or covered in any way.

The tickets are not redeemable for a monetary value.

Requirements for Your Application

To apply, you must be able to attend both the pre-conference event on June 6th, 2019 and the conference day on June 7th, 2019. Besides that, all you need is an interest in testing and quality and your story why we should pick you.

In order to allow us to make the best selection, please also tell us your honest thoughts on how much you depend on the travel assistance.

If you win, you must also provide us with a means of privately sharing information on how to claim the free ticket. An email address is ideal for this.

What Happens if You Win

If you win, you will be provided with instructions how to register for the German Testing Day 2019 free of charge. You will need to provide us with some means of privately sending you this information, preferably an email address. This will only be used for the purpose of contacting you regarding the GTD diversity tickets.

Terms and Conditions & Data Privacy

If you get selected, you will be provided with instructions to register the German Testing Day 2019 free of charge. In order to complete the registration, you will have to agree to SIGS Datacom terms and conditions and data privacy statement. If you decide not to agree, or find that you are not able to attend for any reason, please let us and SIGS Datacom know as soon as possible, so another lucky person can be selected.

Wednesday, March 13, 2019

#CodeConfident: Serenity Cucumber Practice - Part 3

This is the continuation of the coding journal on my first public code challenge serenity-cucumber-practice. If you haven't done so already, it's advisable to check out the previous entries first.
Although this part reflects only one more step in this practice project, its impact was huge. Parveen Khan had scheduled a pairing session with me. I was really looking forward to it as we had a call end of last year where she had shared that she was on a similar learning journey as I was!

March 9

  • #CodeConfident live pairing session with Parveen Khan
  • shared our challenges and struggles, what we want to learn
  • demoed the existing project, what's included, how it works, how I got started
  • Parveen agreed to give it a try, she drove and I navigated her through
  • implemented a new scenario this way, sharing a product to a friend
  • could re-use the given step; the when step was easily done; regarding the then step, we could not yet find the correct locator as it hit the wrong element; here we ran out of time
  • we did all that in very small time frame
  • in retrospect, Parveen shared how scary but how great it was to do it herself, but now she understood what we do; she only wrote feature files so far, not more; asked lots of people to explain the concepts; only when she now did it hands-on, getting instructions she understood the connections; once again the magic of strong-style pairing! really really happy about the outcome; great practice for myself as navigator as well, felt quite confident in what we were doing
  • we agreed to have a second session, Parveen will practice as well and then we can tackle the next challenge together
  • TODO: fix, clean-up and commit

March 9 (cont)

  • fixed locator
  • cleaned up, adapt code to domain language
  • committed scenario


Meanwhile...

Shortly after Parveen and I had our session, the program for TestBash Germany 2019 got released. You can't imagine how delighted I was to see Parveen on that program! Originally, I had planned to skip the 2019 edition as my schedule is very tight this year and I promised myself to take care of myself. However - Parveen now really makes me buy a ticket! I simply cannot miss the chance to see her speak. She has so much to share we all can learn from! Oh, and if you cannot make TestBash Germany, she's speaking at Agile testing Days USA as well ;)

Sunday, March 3, 2019

#CodeConfident: Serenity Cucumber Practice - Part 2

If you've read the coding journal of my first #CodeConfident challenge, you know that I've called for collaboration. The great thing: people followed the call! Many thanks to those who gave feedback on my first public code challenge serenity-cucumber-practice. Here's how the story continues and the project evolved.

February 7

  • received the following code review feedback from Peter Kofler:
  • "The Java language `assert` should not be used in tests. It can be disabled (is disabled by default) and does not give a good error message. I recommend using `assertEquals(expected, actual):` I see Serenity comes with AssertJ includes. I recommend using that. Open http://thucydides.info/docs/serenity-staging/ and search for assertj."
    --> switched from Java assert to use AssertJ assertions (http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html); now understood why the Java asserts did not provide me as great messages as the Groovy asserts we use at work (note to myself: should have questioned that earlier...)
    --> "Thanks a lot! I already wondered why the asserts did not provide me a decent message. Switched to AssertJ assertions now, definitely a way better option :)"
  • "You do not have to create a branch for a work in progress test. Instead mark it as pending. E.g. Cucumber's "@wip" in the feature file ignores the scenario. Here are some options https://stackoverflow.com/q/3064078/104143"
    --> added option to ignore certain features & scenarios, excluding the tag from the Cucumber test runner
    --> "Thanks! I am aware I don't have to create branches to try things out. In this special case I decided to go for a branch as I was already suspecting that my approach is flawed and won't work. I only wanted to keep the work for reference and to receive feedback on it. Still, I now added the option to ignore single features or scenarios, something I was aware of but had not included here. Thanks for the hint!"
  • "All methods in this file are too long. Maybe split out chunks of coherent logic into helper methods. E.g. line 125-132 could go into a `createProductJsonItem()` method. Also building the request should go into another method. The remaining top level method will be easier to understand."
    --> did not think of this as this was "only" playground code - and yet it still makes any code harder to read, even if it's throw-away code; so, split parts into helper methods
    --> "Good point, thanks! I've now split parts into helper methods."

February 25

  • first #CodeConfident live pairing session with João Proença
  • I showed the project status, shared the struggles with the remove item from cart scenario
    • João: let's first see what it really does; inspected the add to cart button
    • we learned we can simply use the URL call sent on adding an item to the cart ("http://automationpractice.com/index.php?controller=cart&add=1&id_product=1&token=e817bb0705dd58da8db074c69f729fd8"); learned that the token parameter is not needed, but this call only works in case you have a session first, so need to access the page in general in the same browser session first; --> we implemented this approach and it worked! :D
    • there are still problems with it, like the usage of a hardcoded product id; we are depending on its existence; João would rather use the product name or something; using a proper API to create our test data would be best
    • João is using a lot of subcutaneous testing for his product, using an API that's exactly called as the UI calls it, would increase testability here a lot
    • test data management is a really complex topic; they first tried the approach to set up the complete data before any test suite run, which turned into a big monster; now they are offering methods to create test data on demand when needed for each scenario; we use the latter approach at work, too
    • I learned what I missed when searching for a solution myself: the exploratory mindset when approaching an automation problem, I already jumped to approaches I knew
  • another problem João sees: usage of product ids in the feature files is not nice; would rather use the product name
    • João explored the URLs found in the source, could not find something suitable; "?name_product=Blouse" or "?name=Blouse" were not working
    • ideas: we could 1) maintain a sort of dictionary in the code to map id and names, 2) use any product randomly but we would loose deterministic characteristic of the test, 3) hide the product id to lower levels as we don't care which one is used (in our product we often use the third approach)
  • I shared my challenge to hover over category menus
    • João would try an implementation to hover over the element then debug the test and see what's really happening; would probably need to wait that submenu is displayed, would check that style is changed to block
    • afair the problem was finding the element to hover over; João: maybe the element did not have the hover, seems the <li> has it
  • retrospective: for João it was a really cool session, these kind of exercises always trigger interesting discussion, e.g. around test data management, that the Serenity session offers to pass over variables between steps, and more; was really productive for him; Lisi: was really cool, the biggest learning was to see João's approach how to tackled these challenges, realized I got stuck in my boxes when tackling different challenges but should rather combine all skills I have; the short coding part together was nice too, would like to see more of that in future sessions, but also had really interesting discussions, was eye-opening overall; João: I'm not coding all the time, I'm not the person for that, rather trying to figure out shortcuts like calling the URL, I saw the URL and found it interesting so I tried things there; it's really about combining the skills to the problem, it's not just coding
  • TODO: commit solution, hide product ids, try again hover scenario, add update quantity scenario
  • TODO: update blog post / create new one, including code review from Peter and session with João; ask both first whether they are okay with that!
  • TODO: select next challenge
  • reflection before session and afterwards: we did it now quite similar to Angie Jones' proposal: http://angiejones.tech/hybrid-tests-automation-pyramid/
  • realized that the needed URL was only given when inspecting the "add to cart" button on the search page, not on the product page itself!


February 25 (cont)


February 26

  • hid product ids from shopping cart scenario steps, don't care which product it is
  • TODO: try again hover scenario, add update quantity scenario
  • TODO: create blog post with code review from Peter and session with João
  • TODO: select next challenge

February 27

  • aimed to implement hover scenario
  • tests suddenly get ignored and therefore skipped! found it's related to the tags used to mark parts to be ignored; as soon as no scenario is ignored the tests run; found that ignoring single scenarios still worked, but ignoring a whole feature file will lead to the not ignored one to be skipped! updating Gradle dependencies, rebuilding project, restarting, etc. did all not solve the issue; updated Serenity libraries to latest version --> now feature level tags work again!
  • found that TightVNC can auto-scale the window, more useful for my case than TigerVNC on Windows
  • found a way to navigate to the desired category (not elegant, but it's working)
  • found that the assertion failed and yet the scenario was marked as passed! IntelliJ warned that the assertion result is indeed ignored; using a JUnit assert the assertion throws... lesson learned: sometimes it helps to walk away, take a break, then have a look again; this way I found that I set a bracket at the wrong spot so I did not really assert for something
  • cleaned up
  • TODO: add update quantity scenario
  • TODO: create blog post with code review from Peter and session with João
  • TODO: select next challenge

February 28

  • implemented update quantity scenario
  • got annoyed by rewriting camel case to snake case, so installed this plugin to switch easily: http://plugins.jetbrains.com/plugin/7160-camelcase
  • speed of implementing very first attempt heavily increased the last days when practicing more regularly :)
  • remembered how to wait for expected condition
  • remembered how to cast different data types in Java
  • remembered regex for numbers
  • realized code style inconsistency, having step definitions in snake case and all other methods in camel case; unified it in favor of camel case
  • TODO: create blog post with code review from Peter and session with João

What else, what's next?

A few more pairing sessions had been arranged already. We will decide on the challenges to tackle together when the sessions get closer. In case you'd like to become a part of my journey, feel free to schedule a session with me as well.

Although I had not planned to do so this year, Angie Jones triggered me to submit to Test.bash(); - and in the end I could not resist any longer. The topic? My code-confident challenge of course. Fingers crossed!
Besides that, my Test Automation University course "The Whole Team Approach to Continuous Testing" is finally recorded and about to go live soon - which means I have my focus back on becoming code-confident. I'm about to choose my second code challenge these days, so stay tuned for more!

Thursday, February 21, 2019

European Testing Conference 2019 - Designed for Us

Last year I got selected to speak at European Testing Conference together with my learning partner, Toyer Mamoojee. It was such an inspiring experience that I knew I had to come again in 2019. And yet again it was amazing!
For this edition I was joining the conference as participant - nothing to do for me than learning together with great people of many different roles and perspectives, all interested in testing. After speaking at many conferences this was a really relaxed experience that I really enjoyed for a change.
Here are the sessions I attended, including my sketchnotes.
As always, I tried to get the most out of the event, not only attending all session slots (I felt I also had the energy to do so), but also making good use of the breaks to talk with people old and new, and of course using the time after the official program was over. After experiencing a lot of conferences during the last few years (a lot more than I ever imagined, thanks to my speaking challenge of 2017), I learned that the unofficial socializing part of a conference is usually the most valuable time spent. Attending sessions is great and a good learning experience, and yet exchanging knowledge and new things learned with my peers is unbeatable.

The great thing about European Testing Conference is that they design the conference so that plenty of these kind of informal learning opportunities and networking chances are available, the space for that is created by intention. You only have to seize the moment! To get further impressions about this very special atmosphere, check out the following links.
One conference was over, and the next one started! I felt really honored and lucky to get the opportunity to attend #ET19 just the day after European Testing Conference. This was my very first peer conference, and also one about a topic very dear to my heart: exploratory testing. For now, I can only say so much: it was great, and it was a lot to take in! I still have to process everything. In the meantime, check out Marianne Duijst's awesome #ET19 sketchnotes.
Last but not least, here are some of my favorite #ETCmoments of 2019! I'm already looking forward to the 2020 edition of European Testing Conference!

Thursday, February 7, 2019

#CodeConfident: Serenity Cucumber Practice

As announced, I plan to publish my coding journal for each GitHub repository I create within my #CodeConfident challenge. I've just finished the scope of my first challenge, so here are my related notes; as raw as they are, in chronological order. My hope is that they will serve three goals.
  1. Act as learning journal for myself, making my learning journey visible helping me acknowledge what I achieved
  2. Provide context for anyone who would like to check out my repository and maybe provide feedback and support
  3. Potentially provide a source of learning and inspiration for anyone else following my journey
Here's my journal for my first GitHub repository serenity-cucumber-practice. Want to provide feedback on it or pair up with me on further challenges? I hereby call for collaboration!

January 13

  • start from Serenity Cucumber starter project (https://github.com/serenity-bdd/serenity-cucumber-starter)
  • set up remote Chrome running Docker  
  • install TigerVNC for Windows 
  • revise scenario 
  • adapt step definitions -> still successful (gradlew clean test aggregate) 
  • create first page object and try to open it -> not compiling, packages to import "don't exist": "error: package net.serenitybdd.core.pages does not exist" 
  • TODO: fix issue

January 14

  • followed instructions to have page objects in main>java, which resulted in lots of fruitless searching why I got a "error: package does not exist" and the class and import could not be added to the classpath by IntelliJ; tried lots of things until realizing the resolved dependencies are shown in External Libraries for each module in the packages sidebar (always checked in the projects view); move of page object to another place solved the issue
  • "error: package net.serenitybdd.core.pages does not exist"  -> realized it has to be in test as only there dependencies are resolved by gradle build  
  • Selenium Grid setup in Docker is working as usual  
  • TODO: Clean up and do first minimal commit

January 15


January 17

  • generated SSH key and added it (all of https://help.github.com/articles/connecting-to-github-with-ssh/) -> worked like a charm, IntelliJ saves passphrase
  • discovered https://desktop.github.com/ -> could delete old branch via UI
  • first version of add item to cart scenario
  • cleaned up a bit
  • revising package structure: learned I need to put everything into one custom package, otherwise test runner fails
  • TODO: improve first scenario, then implement second

January 20


January 24


January 26


January 29


January 30

  • cleaned up branch
  • split different test version into methods to keep code for feedback and be able to switch between them easier
  • none of them is working, need feedback
  • TODO: implement 2 other scenarios on master to finish scope and ask for feedback

February 5


February 6

  • several potential scenarios to try
  • tried to go for categories; stumbled across finding a good selector for menu element, was not interactable
  • switched to extend the search feature by further scenarios; added view product page
  • tried to add view product preview and again element was not interactable; found I was using the mobile site not the website for locating it!
  • learned how to use actions to mouse over the element then the next element is interactable
  • learned how to switch to an iframe (https://www.guru99.com/handling-iframes-selenium.html)
  • merged latest master into branch
  • TODO: write blog post with learnings, ask for feedback

Calling for Feedback

That's it so far, good enough for now! Your feedback is appreciated.