Over the past 9 years of Sprout Social’s existence, our Selenium framework has grown into 100’s of scenarios with as many page classes and factory containers. We’ve noticed it has become cumbersome to manage and as such, our QA Engineers thought the models in use needed a refresh. So in recent times, we adopted what we like to call the Component Model.

Note: All code examples can be found in the following Github Gist.

The idea for this component model was a result of a few things:

  • Modern websites aren’t really built strictly of static “pages” any more
  • A Grow@Sprout talk on the SOLID principles by Uncle Bob
  • Our web app’s use of React.js, which uses a similar idea of components for encapsulation

    Modern websites (i.e. web applications) are highly dynamic pieces of software with global bars, side bars, content views, and pop-outs. Many of these pieces are yet composed of other smaller pieces. Reflecting on this and the SOLID principles, we realized that the monolithic classes the page-object model created were not working to our advantage anymore.

    We noticed we had multiple functional zones and really only one spot for actual page content. We had a global top nav bar that also included settings access. Additionally, there is a secondary left nav bar for navigating within functional areas. A lot of pages also contained a rail on the right side commonly housing date pickers and filters for the content view. Please refer to the mockup below to help visualize this:

We noticed plenty of areas in the framework where we could DRY (Don’t Repeat Yourself) up the code. This is included in the SOLID software development principles. Buttons, inputs, and data visualizations all share common code in the UI implementation. Why, then, should our tests implement multiple ways to get and interact with filters across multiple page classes?

Instead, we agreed that the components our selenium tests use should be a 1:1 representation of their equivalent web UI component. Take this example CheckboxV1 (click for the gist code snippet) class. The most beneficial aspects of this model are: the component houses its unique selenium selector, and specific constructors and methods that your tests can consume. This significantly enhances the readability of code and the maintainability of the framework.

After using these components for a while, we started to notice that code was being repeated between classes. In order to DRY the repetition up, we created a class called BaseComponent to control much of the basic behavior of any component. One can then extend all other components from this BaseComponent to ensure every component implementation is as simple as possible.

Combining implementation from our original CheckboxV1 with inheritance from BaseComponent further simplifies the component and increases the maintainability of the framework. CheckboxV2 allows BaseComponent to do most of the heavy lifting not specific to the particular component. We also have one less spot to check when fixing issues as most of the behavior is within BaseComponent instead of multiple versions of similar functionality scattered across multiple components.

A quick note on the above CheckboxV2 implementation - we tend to use the String argument constructor the most with components that have attributes in the UI code. The By and WebElement argument constructors are backups for elements in our UI that might not contain special data attributes, what we refer to as QA attributes, but the follow same/similar component structure in the DOM. However, we encourage our team to add their own QA selectors if able to or further collaborate with the developers to get them added. Having them usually allows the component code and subsequent Selenium automation to be much simpler overall.

Here is a quick example of how we then use the components within a Page and Step Definition classes.

It has been a fun and interesting journey getting to this point through many refactors of our framework. However, it has proved time and time again to make our framework a bit easier to grok as well as maintain. We are already beginning to think of ways to improve upon this further such as with a wrapper class called Selector to help with formatting and making BaseComponent more friendly to work with. We look forward to providing more information on those in the future

Have you or your organization used or are currently using something similar? Please share your experiences in the comments!

It goes without saying, I didn’t exactly get to all the things I wanted to get to this year; however, I did get to many things I didn’t know I would get to accomplish in the past year. The year went by far too fast, and now I sit on my couch watching the ball drop… in this -9 degree weather… thinking “Why did I buy a house in Chicago of all places”…

Maybe the year went by so fast because I experienced a large amount of things this year… Here is to attempting to digest it all in one sitting (lifts a glass)

Personal Life

The majority of the happenings fall into this category: kids, love, homes, etc. A lot definitely happened this year in my personal life. So I hope you can follow it all!

Health stuff

Well this time last year I was still recovering from surgery. I am happy to say, just over a year later, that I am having no issues! I still have surgical scars, but no pain anymore! No odd bulge anymore! For those just tuning in, I had my inguinal hernia (groin) fixed last year. Basically I have surgical mesh implanted in that area now. No pain, no itchyness…all good here!

I was also having some digestive issues around that time. I believe it was mostly attributed to stress (which caused other issues)…but the endoscopy/colonoscopy came back negative for any issues! Thats a great thing to have heard around that time!

With happenings since 2015 still in mind, I found out that I had an issue with anxiety. I had so many odd symptoms related to this, that I was very scared at the time. I am happy to say that through therapy and a bit of medication, I am doing much better at the end of 2017 than I was at the onset. I am actually weaning off the meds and haven’t needed therapy in a few months. Thank you so much to my therapist, I hope you had a great year! I wasn’t too keen on meds and neither was my primary, but he could see what I was going through in my face. We made a plan that involved an end date, and executed it. I am so glad I did. Through therapy and meditation, I was able to learn how to take control of my life again.

Thankfully other than the pain of working out (joined a gym recently), health has been only as eventful as described above this year.

Love life

I am happy to say that I am still with my girlfriend. We are going on two years together in a few weeks here! She has been so integral in the mental and physical healing processes I went through in the past year. She did it all with a smile on her face, and I am so appreciative of that. Without her, I don’t think I would have made it through the year to end it on a positive note, like I intend to do with this post.

It was fun to do some traveling with her for a few weddings as well as moving in with her (more on that soon). Driving up the PCH was amazing! Forgetting my tux in Manchester halfway to Sanbornton was ineresting… Having her there along the way made it all the more better. I loved meeting more of her family as she loved experiencing mine.

I look forward to our 2 year anniversary and many more to come.

Delso kids

Where to start without making this post any longer than it needs to be… Nora is now in kindergarten and Liam is about to start Pre-kindergarten (same as Nora did)! Where the hell did time go?

It warmed my heart to hear at conferences that Nora likes to sing and she is reading/mathing at close to a 1st grade level! Shows how reading 4 books nightly helps her learn! She is so intelligent and caring…a bit too caring at times. She loves to draw as well!

Liam is following in the footsteps of his sister so quickly. How well Nora speaks has heavily rubbed off on him this year. I wouldn’t be suprised if he starts reading a bit before 2019 starts!

Fun things with the kids this year:

  1. First plane ride to NH for Uncle Sean’s wedding to Kate
  2. First and Second Star Wars movie viewing (The Force Awakens and The Phantom Menace)
  3. Nora learning how to play Pokemon card game
  4. Nora and Liam playing their first video games (Disney Infinity Star Wars, Minecraft, and Pokken Tournament)

New house!

After a few months of searching and 3 total offers, I and my girlfriend are the proud owners of a house! I feel that I am definitely more ready to handle a house than I was with the first one I owned with my ex-wife. I wasn’t nearly as happy with that purchase as I am with this one. I am excited when I encounter an issue or a problem (good or bad ones) with the place. I look at the as opportunities to learn something new. My tools have been used more since this purchase than they have ever been used since I received them.

Moving was interesting and I am still waiting on a refund check from the rental property I was in…but the move was much cheaper than it could have been.

I can’t wait to see what we do with the house this year together! I am looking forward to adding a fence to the propery and improving the basement layout soon. Further in the future it will be interesting to rework the kitchen and master bathroom!

Big thanks to our realtors Steve and Angelica for helping us through the process. Without them, I think the stress of losing two places before finally closing on this one, would have gotten to me more than it did. We can always say the first two weren’t meant to be, but then, you never know. Regardless, I am very happy with this home purchase…other than it being in Chicago…and the weather being -9 degress tonight!

Sprout Life

SproutSocial has grown so much in the past year! Its hard to think that I was employee #115 over in 2014 when I joined the team. We are now well over 400! The QA chapter was 4 people when I joined. Since then we have almost trippled in size and most of that is in the past year!

The best part of work? I finally got the promotion I have been working very hard for the past year and a half. I’ve improved in multiple areas including communication and mentorship. I’ve also been spending a majority of my time developing automated tests for the multiple development squads I have been a member of. Some notable projects I undertook for automation were reducing reliance on the UI to set initial test data states and reworking tests to use a more component oriented architecture as opposed to straight up page object mode.

A big shout out to my managers and team members with regards to this year. Without you, I wouldn’t have had the chance to grow in my career. I look forward to paying it forward this year!

Things missed

I definitely missed a few things the past year that I wished I would have gotten to. I am not dissapointed in myself for these, but they are things that I would say define me, and things I would always like to do more of.

I definitely did not sketch at all really this year. Maybe a few randoms, but nothing really well thought out. I also didn’t Thankfully, one of the things to be mentioned in my opportunities list should cover my art stuff.

I also don’t think I picked up my guitar too much this year. When I did, the kids wanted to mess with it. So I didn’t get to play as much as I got to show it to them, which honestly, is really not a bad thing. I am glad they are interested in it because I wish I was as interested at their age!

I don’t need to talk much about the goals accomplised…I think the above sections have already detailed that!

Opportunities for 2018

I would like to build a videogame. Thankfully the opportunity has arrived in the form of two co-workers! Also thankfully, this should include three things I’d like to do more of this year: music, art, and programming!

I can’t wait to work more on my house as mentioned above! Fences, walls and whatever comes up. I want to learn more about building things and improve my house.

Any time I make it to a concert, I want to be on stage. I would like to find a way to join a band again. I would prefer that to be with my band again, but I might not be opposed to playing with new people supposing I can get back into playing again.

Grow @ Sprout. I would like to partake in any work activities to further my career. I want to become a better mentor and leader of the QA team. Finally, I would like to do more in general, but also work related. I would like to blog more be it personal or work related.

In closing 2017

Its been an interesting but very rapid year with a lot of feels all around. Many things happened that I won’t forget. Many things happened that I will learn from and continue into 2018.

I am so gratefull for all the wonderful, caring people in my life. To Rev, my children, my family, my friends and my Sprout family: I would have had a much harder time this year without you all and I am looking forward to finding ways to pay it forward in the coming year. Thank you so much and wish you all the best!

Oh yea, I avoided politics in this but it was a huge part of 2017 as well… Enjoy Mar-A-Lago tonight Mr. President. Since its warm there, does that count as proof of global warming…or only local warming? ok ok I am done…time for bed

I think I have been putting this off long enough, and today seems like an appropriate day to write this.

The past few years have been a bit bumpy since she left us. To be completely honest, 2015 and 2016 kind of melded into a singular entity of sorts.

Firstly, (yes, this is going to sound like a high school paper…because I said so) two years ago, we lost someone we didn’t quite ever expect to lose. Two short years ago, I lost my mother. Yes, many expect to outlive their own parents, but due to unforeseen medical issues, my mother was taken from us earlier than expected.

Feb 9, 2015 she was laid to rest. Well, not technically laid, but cremated and we had a service for her. It was a very nice service, and many people, including those from my work (only there about a year at this point) showed up to pay respect. I personally was unable to say much but I still appreciate that my ex-wife (we’ll get to that) said a few words I asked her to.

I was also not expecting to converse with my step-father whom I have little to no respect for due to how he treated my siblings and I during our childhood. This includes my mother. I feel we would have been far better off with him sooner in my life, closer to when my sister was born, rather than later. It took my mom man years to get away from him and she was still haunted by him until she passed away. Still, we let him say his peace to her at the service. However, I think even with therapy, I avoided facing the fact she was gone.

Second, a few months later I was told by my wife that she was no longer interested in me. This and many other small events dealing with this since then were very hard to take. I am glad I had good friends and coworkers to help me through this period in my life.

Always thinking, I immediately asking if it was someone else (and also asking specifically about someone in particular) and being lied to about it, was very hard. It was the person I thought it was, and I was basically being emotionally cheated on for a number of months. I know its not fully her fault and some of mine, but the way all this went down was not pleasant even if we agreed to do it in a civil manner.

When all was said and done, and signed off on by a judge, it was almost a year later. It was also 2 months after I finally moved out of the house and probably 6 after finding out she was pregnant with said guy’s child and not long after we separated (very short time actually).

Moving in with my best friend was the best decision I could make. We talk a lot about out issues with one another and it helps us both. Hoping we can continue it another year until I purchase my own house again late 2017 or in 2018.

Thankfully I found someone who fully appreciates me and whom I can fully appreciated back in January 2016. Its been a wonderful year with here and we have been through a ton of ups and downs of our own. Not between one another, but going through them together. On the up, we have done many things together and travelled once. I cherish all the time I have spent with her thus far. On the down, she lost her brother unexpectedly this past summer following his own wedding (days after). It affected my own emotional state as much as hers and seemingly set me on a bad path health wise… It think this was due to it reminding me so much of losing my mother. The images of them both are still fresh in my mind.

(Ok ok, I am done with the high school paper style…)

Not long after this, I started to get what I can only describe as anxiety induced panic attacks…but that wasn’t the only thing on the menu in 2016 health wise. I’ve had an inguinal hernia for probably 2 years. Unfortunately, it started to bug me more around the fall of 2016. Additionally, around the time of the election, I started to get what seemed like acid reflux. I have no idea why to this day. I’ve also been having irregular bowel issues for probably a year.

So since August, I had seen probably 6 - 7 different doctors at my primary’s practice including a gastroenterologist and his assistant. I was prescribed some antacids for about 5 weeks and also started Zoloft for the anxiety. Around this time, I had also purposefully decreased my therapy appointments to once a month by this point as well. I thought I was doing okay. Since the anxiety episodes, I have increased them back to twice a month, sometimes weekly if I feel I need it.

Outside therapy, I started doing meditation and tapping (EFT) for a bit too. Basically anything that helped. What do you know, they both helped! Thankfully, 5 months later, I am doing much better. I can sleep again and I don’t have the panic feelings. To note how bad they got, I had central chest pain one night and ended up in the ER. Dr told me it was either muscle pain, reflux, or anxiety. All very possible explanations based on the past few months of anxiety.

It probably didn’t help that I had hernia repair surgery scheduled a week after the chest pain episode and was nervous as hell about that. The ER doc required I visit my primary and possibly a cardiologist prior to this to clear me. Thankfully, I was able to see both and get cleared within that week. I had already prepared myself for it and didn’t want to wait any longer.

The surgery went well, and I plan to make a shorter blog entry here very soon as I just hit 2 months recovered today. I took notes about it the first few weeks in order to write it. I am definitely feeling pretty good now and excited to get back to exercising and generally being healthy again. (Keep telling myself I am healthy though. Stay POSITIVE!).

One month, almost exactly, after the hernia repair, I had an endoscopy and colonoscopy. This is what the gastroenterologist I mentioned above recommended for me based on the GI symptoms I had mentioned to him. He thought it might be IBS. Drinking the electrolyte mixture and all that was not fun, but anesthesia is an amazing, albeit dangerous, thing. I remember up to them putting the bite guard in my mouth and thats about it. Same with the hernia, I remembered the anesthesiologist pointing out the davinci robot machine and traveling through the maze of OR halls. Thankfully both procedures came back negative as did the biopsies. So its nothing like H. Pylori, or Celiac’s disease I think (and a few others were mentioned).

I still have what could be acid reflux on and off, so the only thing left is probably something small intestine related or possibly a hiatus hernia. Then again, it could be just me and still the stress of the past few years working their way out. My primary doc said he doesn’t think its another hernia based on pushing on my stomach. The gastro doc doesn’t think its SIBO as I am not really bloated enough he said. So I guess I just live with it. I have been eating many more different things including spicy ones since basically going the boiled meal route a few months ago. It seems like I get most of a reaction when I drink water…so thats interesting. Its a mild feeling in my throat and thats it. Sometimes a small pain in my stomach, but its possible that is just the clamp they used because they scuffed my colon a bit due to its angle, which could explain the on and off constipation.

(Sorry for all the details, but if you have read this far, you are probably interested in that stuff lol)

Either way, with the surgery and the two procedures out of the way. I am in a much better place. I am not super worried about things and don’t stress over them anymore. I am more curious as to why I have the reflux, if thats even what it is. I’ve got two amazing kids, a wonderful girlfriend and plenty of awesome people to enjoy life with. Why stay worried about it all?

So onward I go into the remaining 11 months of 2017. I am going to keep a positive attitude. I have been sketching slightly more early in the year, and coloring, which has been fun. Its something my girlfriend and I enjoyed together on our one year and plan to do more of. I am looking forward to my two wonderful kids growing ever more! I want to keep showing them guitar and playing video games more with them both. I look forward to moving my career forward quicker now that I have less to stress me out on my plate! I am already doing more automation and working on being more senior with how fast the company is growing #growsproutgrow! I’d like to keep streaming gameplay at least once a week going forward too, but thats the last thing on my list for now.

So yea, writing this was fairly therapeutic to be completely honest. 2015 and 2016 have both allowed me to grow personally and emotionally (professionally too, but not as much as I would have liked). They were rough, but I am looking forward to continuing my life and seeing where it goes. Travels, experiences, and such… Hope you have a wonderful 2017 as well!

So I figured I would make Mondays a regular post and do something creative. Two birds with one stone right? Score one for me!

So last weeks recap. Monday I wrote the initial post about being creative this August. You can find it here. Basically I just want to encourage myself to be a bit more creative in hopes that it will jog my intrest in sketching and other things again.

Tuesday my streaming partner was a bit busy. So I streamed on my own. While this counts on my list of things to do for the challenge. It wasn’t very challenging. The issue is, I was playing Overwatch. ALL the big names in streaming are playing the game regularly. So I had no one to really interact with other than my friend I was grouped with. So it was mostly me swearing each time I died (kinda like my roommate does playing games like call of duty, but less so lol). I’ve noticed that Snuffy (my co streamer) and I have had fair luck playing older games and having a handful of people that watch other than people we know. So hopefully when we play Uncharted again next week, we will have an audience and things to talk about. Here comes a shameless plug: Check us out on twitch.tv.

Wednesday was not something creative but none the less something I wanted to do more of this summer. My roommate, girlfriend, and I went and played some tennis. Although the usual courts I played at were taken! However, this was a blessing in disguise, because it forced us to look else where. We found some other courts 5 min away with lights! It was so fun! I can’t quite explain how happy I am when I am playing tennis…and sore…but happy!

Thursday night, on a whim, roommate and I went to the sports store. The previous night, and another day, when I was playing tennis, the grip on my less than a year old racquet was shot! Any time I hit the ball, it would twist the racquet in my hand and make it very hard to play. So, I picked upa few over grips, a vibration dampener (looks like sunglasses emoji B) ) and some sweat bands. Yea, the week previously I had an issue with sweat getting into my eyes. Had a blast hitting around again with my roommate and found out the lights stay on until 10pm! Thats fantastic and we plan on making it a weekly thing.

Friday I had my kids and I don’t think I remember doing ANYTHING creative. However, the Olympics opening ceremony was on, and I am a huge fan of the Olympics. So it was cool to sit down with my kids and watch most of it with them. Of course my daughter is interested…because its TV. Actually, she was interested about it and asking questions, which is great.

Saturday I had a wedding to go to, so nothing creative was really accomplished. I did shoot at least one cool photo and messed with the new app craze called Prisma. Its pretty neat to be honest. So I tooled with that a bit and saved a few cool ones.

There is nothing really important to show as far as pictures are concerned. However, I had a conversation with a co-worker today about inspiration. He is a designer and sketches often. He seems to do it with such ease that I was intrigued as to how I could be the same, even if my art was just for fun.

His recommendation was to sketch daily if I want to be serious, which honestly, is not what I am going for just yet. He then suggested looking for a daily inspiration website, which I know does exist. So maybe I will try that soon. He also mentioned adult coloring books of which I do have one. I bought the Harry Potter one and spent money on a nice Prismacolor 36 colored pencil set (including a nice carry case for them). So that could be what I do next… but skething is really what I want to do. I think I am just afraid of what people will think of my art. So my mind messes with me and ends up making me feel not inspired.

Well, its only the first week, and honestly, it doesn’t have to end with August. I want to do it for the challenge, but I hope it also just turns into habit. Also, I should probably get the comments working on my site… Too tired to do so tonight. If you are good with Jekyll, let me know! Until then, I look forward to writing again next week. (I am not going to edit this one either. I’ll rely on spell check in the browser, but thats about it. I’m not trying to win any awards or anything >.< )

Let me premise this with the fact that I believe I am a jack-of-all-trades-master-of-nothing kind of person. I have also never blogged before, but if my memory serves me, I was a fair writer in highschool and college.

I like far too many things to focus on mastering any single one. Some of these include: music, programming, drawing, and writing. I don’t see this as a particularly bad thing becuase I would rather not do any specific one professionally, as it might ruin the fun of said hobby. Conversely, I believe it grants me extra dimensions as a person due to these interests.

sketching desk

I’ve been tossing around the idea of doing a sketching challenge the past few months since I started to get serious about it last February (2015). Lets be completely honest, that lasted like 3 months tops. I also stopped playing guitar last February as well. Seeing a trend here? My mother passed away that month and set off quite a long chain of events bringing me to today. I DO want to do all those things, and I know I will never be able to truly focus on one of those things at this point in my life.

So instead, in June, I set off doing a photo-a-day challenge. Quite honestly, it was fun and easy to do. It showed me that I could focus on something simple like that. Unfortunately, I have an issue feeling I need to be inspired in order to draw anything worth a damn to anyone. I never once stopped to think, who should give a shit about what I draw anyways, or should I really give a shit what people say about my sketches? In all honesty, I shouldn’t. I think its that fear that is keeping me from doing what I know I should be. My mother loved when I drew, and thats why I originally started it up again.

Maybe my goal with this was wrong? In the past, I did mostly cartoony illustrations with a BIC mechanical pencil. I more recently decided I wanted to do it right? Well what is right? I bought a set of 12 artists pencils, which are wonder ful to work with. I am trying out a clutch style pencil too, but I don’t think I like 2H lead as a general purpose sketching hardness (even though thats what BICs have in them). So I picked up a set of HB (I think) instead, but am using the 2H so I don’t waste it for now. I also decided that I should look into still life sketching and learning value, which is a good goal I still think; however; for inspiration, I shouldn’t restrict myself to only that.

Which leads me to now. I was talking with a friend most recently and she asked if I wanted to do a sketch-a-day challenge with her. I thought July would work, but I was too busy. I’ll never not be busy, so I just need to do it. She made a good point that I don’t need to show them to anyone. I could even just do a weekly summary of the ones I like for social media. So I think I am ready to do that, but with a caveat.

I am not ready to just devote my time to one hobby. I like way too many things to devote 1 hour a day or more to a sketch (it can take that long, ask most sketch artists). So with that, I am just going to do a creative-a-day challenge for the month of August 2016.

The Challenge includes the following:

  • Sketch something - posted on instagram
  • Write something (blog, lyrics, music, etc) - posted here
  • Stream something (with better commentary as I do it) twitch.tv/ddaypunk06
  • Color a picture (either adult coloring book or for fun with my kids)
  • Write some code not related to work

I am open to suggestions to add to this list via twitter @TheDelso or on my Facebook profile.

As I wrote this fairly quickly over lunch at work, I am not going to edit it. Further blog entries will hopefully be planned better. Please let me know what you think!

Looking forward to a highly enlightening and creative August with you all! If any want to join in let me know! I’d be happy to have friends get interested in this!