seasidetesting.com Open in urlscan Pro
192.0.78.136  Public Scan

URL: https://seasidetesting.com/
Submission: On November 21 via api from US — Scanned from DE

Form analysis 5 forms found in the DOM

GET https://seasidetesting.com

<form role="search" method="get" class="search-form" action="https://seasidetesting.com">
  <label>
    <span class="screen-reader-text">Search for:</span>
    <input type="search" class="search-field" placeholder="Search…" value="" name="s">
  </label>
  <button type="submit" class="search-submit"><i class="fas fa-search"></i></button>
  <input type="hidden" name="lang" value="en">
</form>

GET https://seasidetesting.com

<form role="search" method="get" class="search-form" action="https://seasidetesting.com">
  <label>
    <span class="screen-reader-text">Search for:</span>
    <input type="search" class="search-field" placeholder="Search…" value="" name="s">
  </label>
  <button type="submit" class="search-submit"><i class="fas fa-search"></i></button>
  <input type="hidden" name="lang" value="en">
</form>

POST

<form method="post" class="gdpr-privacy-preferences-frm">
  <input type="hidden" name="action" value="gdpr_update_privacy_preferences">
  <input type="hidden" id="update-privacy-preferences-nonce" name="update-privacy-preferences-nonce" value="8106b1ba7d"><input type="hidden" name="_wp_http_referer" value="/">
  <header>
    <div class="gdpr-box-title">
      <h3>Privacy Preference Center</h3>
      <span class="gdpr-close"></span>
    </div>
  </header>
  <div class="gdpr-mobile-menu">
    <button type="button">Options</button>
  </div>
  <div class="gdpr-content">
    <div class="gdpr-tabs">
      <ul class="">
        <li><button type="button" class="gdpr-tab-button gdpr-active" data-target="gdpr-consent-management">Consent Management</button></li>
        <li><button type="button" class="gdpr-tab-button gdpr-cookie-settings" data-target="necessary">Cookie Settings</button>
          <ul class="gdpr-subtabs">
          </ul>
        </li>
      </ul>
      <ul class="gdpr-policies">
      </ul>
    </div>
    <div class="gdpr-tab-content">
      <div class="gdpr-consent-management gdpr-active">
        <header>
          <h4>Consent Management</h4>
        </header>
        <div class="gdpr-info">
          <p></p>
        </div>
      </div>
      <div class="necessary">
        <header>
          <h4>Necessary</h4>
        </header><!-- /header -->
        <div class="gdpr-info">
          <p></p>
        </div>
      </div>
      <div class="advertising">
        <header>
          <h4>Advertising</h4>
        </header><!-- /header -->
        <div class="gdpr-info">
          <p></p>
        </div>
      </div>
      <div class="analytics">
        <header>
          <h4>Analytics</h4>
        </header><!-- /header -->
        <div class="gdpr-info">
          <p></p>
        </div>
      </div>
      <div class="other">
        <header>
          <h4>Other</h4>
        </header><!-- /header -->
        <div class="gdpr-info">
          <p></p>
        </div>
      </div>
    </div>
    <input type="hidden" name="all_cookies" value="[]">
  </div>
  <footer>
    <input type="submit" value="Save Preferences">
  </footer>
</form>

<form id="jp-carousel-comment-form">
  <label for="jp-carousel-comment-form-comment-field" class="screen-reader-text">Write a Comment...</label>
  <textarea name="comment" class="jp-carousel-comment-form-field jp-carousel-comment-form-textarea" id="jp-carousel-comment-form-comment-field" placeholder="Write a Comment..."></textarea>
  <div id="jp-carousel-comment-form-submit-and-info-wrapper">
    <div id="jp-carousel-comment-form-commenting-as">
      <fieldset>
        <label for="jp-carousel-comment-form-email-field">Email (Required)</label>
        <input type="text" name="email" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-email-field">
      </fieldset>
      <fieldset>
        <label for="jp-carousel-comment-form-author-field">Name (Required)</label>
        <input type="text" name="author" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-author-field">
      </fieldset>
      <fieldset>
        <label for="jp-carousel-comment-form-url-field">Website</label>
        <input type="text" name="url" class="jp-carousel-comment-form-field jp-carousel-comment-form-text-field" id="jp-carousel-comment-form-url-field">
      </fieldset>
    </div>
    <input type="submit" name="submit" class="jp-carousel-comment-form-button" id="jp-carousel-comment-form-button-submit" value="Post Comment">
  </div>
</form>

<form autocomplete="off" role="search" class="jetpack-instant-search__search-results-search-form">
  <div class="jetpack-instant-search__search-form">
    <div class="jetpack-instant-search__box"><label for="jetpack-instant-search__box-input-1" class="jetpack-instant-search__box-label">
        <div class="jetpack-instant-search__box-gridicon"><svg focusable="true" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" aria-hidden="false" class="gridicon gridicons-search " style="height: 24px; width: 24px;">
            <title>Magnifying Glass</title>
            <g>
              <path d="M21 19l-5.154-5.154C16.574 12.742 17 11.42 17 10c0-3.866-3.134-7-7-7s-7 3.134-7 7 3.134 7 7 7c1.42 0 2.742-.426 3.846-1.154L19 21l2-2zM5 10c0-2.757 2.243-5 5-5s5 2.243 5 5-2.243 5-5 5-5-2.243-5-5z"></path>
            </g>
          </svg></div><input autocomplete="off" id="jetpack-instant-search__box-input-1" inputmode="search" placeholder="Search…" type="search" class="search-field jetpack-instant-search__box-input"><button tabindex="-1"
          class="screen-reader-text assistive-text">Search</button>
      </label></div>
  </div>
</form>

Text Content

Skip to main content
 * Follow me on Mastodon
 * Follow me on Twitter
 * Fork me on GitHub
 * Subscribe to my RSS feed

Seaside Testing
On Testing, Patterns & Learning
Skip to content
 * Work With Me
 * Book A Workshop or Tutorial
 * About




AUTHOR AND COMMITTER DATES IN GIT – AN OBSCURE BUG

Sun, August 4, 2024 StephanUncategorized No Comments


THE CONTEXT

While preparing a Git repository for my tutorial “The Disappearance of J. T.
Womblegast — A Git Tutorial” for the Agile Testing Days 2024, I wanted to set
the commit and author date for commits explicitly.

In most cases, these dates are identical. Still, they can be different, as the
author and committer can be different people (for details about the commit
details, see the extensive Git documentation for commits). One interesting
detail about the dates: The author date can be set with the command line option
--date , while the committer date can only be set using an environment variable.


HOW TO SET THE DATES

I chose to set the author date using the command line option and the environment
variable GIT_COMMITTER_DATE for the committer date.

When there is a change in the Git index (or staging area), here’s how to commit
it with the given date and time info:

?
> GIT_COMMITTER_DATE="Sun Aug 4 11:14:08 2024 +0200" git commit -m "Demo commit"
--date "Wed Jul 24 19:09:11 2024 +0200"
[main (root-commit) cbaea5e] Demo commit
 Date: Wed Jul 24 19:09:11 2024 +0200
 1 file changed, 1 insertion(+)
 create mode 100644 wahoodie

All is good: I created a file with some content, added it to the staging area,
and committed it.


VARYING THE DATES

Let’s be more daring with the commit dates and go a few years into the future
and past. Add some more text to the file ‘wahoodie’ I used before, add the
change to the Git index and commit:

?
> echo "more text" >> wahoodie
> git add .
> GIT_COMMITTER_DATE="Sat Jan 1 00:00:00 2000 +0200" git commit -m "Another
commit" --date "Tue Jan 19 2038 03:14:08 UTC"
[main 133c21b] Demo commit
 Date: Tue Jan 19 03:14:08 2038 +0000
 1 file changed, 1 insertion(+)

It still looks good.


WHEN IT’S NOT WORKING

Now, let’s go far into the past (and future):

?
> echo "another line" >> wahoodie
> git add .
> GIT_COMMITTER_DATE="Wed 11 Oct 1634 22:47:38 +0000" git commit -m "Updates
file" --date "Tue Jan 19 2038 03:14:08 UTC"
fatal: invalid date format: Wed 11 Oct 1634 22:47:38 +0000

Huh? Is something wrong with the (committer) date? It looks OK, but it could be
the weekday that’s causing trouble. Let’s try to commit a change using the wrong
weekdays:

?
> echo "even more text" >> wahoodie
> git add .
> GIT_COMMITTER_DATE="Mon Aug 4 11:14:08 2024 +0200" git commit -m "Demo commit"
--date "Sun Jul 24 19:09:11 2024 +0200"
[main e2e848e] Demo commit
 Date: Wed Jul 24 19:09:11 2024 +0200
 1 file changed, 1 insertion(+)
stephan@seaside ~/dev/garble-git-repo/tmp/wahoodie ᚠ main > git log
--format="Author Date:    %ad %nCommitter Date: %cd     %h" -1
Author Date:    Wed Jul 24 19:09:11 2024 +0200
Committer Date: Sun Aug 4 11:14:08 2024 +0200     e2e848e

The given date is used, and the offered weekday was corrected. Things look OK
when leaving out the weekday altogether:

?
> echo "one more line" >> wahoodie
> git add .
> GIT_COMMITTER_DATE="Aug 4 11:14:08 1987 +0200" git commit -m "further update"
--date "Jul 24 2042 19:09:11 +0200"
[main 696dc2b] further update
 Date: Thu Jul 24 19:09:11 2042 +0200
 1 file changed, 1 insertion(+)
> git log --format="Author Date:    %ad %nCommitter Date: %cd     %h" -1
Author Date:    Thu Jul 24 19:09:11 2042 +0200
Committer Date: Tue Aug 4 11:14:08 1987 +0200     696dc2b


THE REAL CAUSE OF THE ERROR MESSAGE

After experimenting with the date & talking to folks on the Git Discord, I
figured the epoch is the (lower) boundary for dates in Git. Let’s use the
following shell script (‘demo-date-format-issue.sh’):

?
1
2
3
4
5
6
git init tmp
cd tmp
echo "Some content" > non-empty-file.txt
git add .
GIT_COMMITTER_DATE="31 Dec 1969 23:59:60 +0000" git commit -m "Commit 1" --date
"12 Dec 1969 23:59:60 +0000"
GIT_COMMITTER_DATE="01 Jan 1970 00:00:00 +0000" git commit -m "Commit 1" --date
"01 Jan 1970 00:00:00 +0000"

Running it gives the following output:

?
> ./demo-date-format-issue.sh
Initialized empty Git repository in /Users/stephan/dev/garble-git-repo/tmp/.git/
fatal: invalid date format: 31 Dec 1969 23:59:60 +0000
[main (root-commit) 9c0b65a] Commit 1
 Date: Thu Jan 1 00:00:00 1970 +0000
 1 file changed, 1 insertion(+)
 create mode 100644 non-empty-file.txt

Aha! The first commit attempt fails and gives a misleading error message: The
date format is perfectly valid. Apparently, Git can’t process a date before 1
January 1970 00:00:00 UTC.

Remarkably, the next date that might cause trouble, ‘2038-01-19T03:14:08+00:00’,
doesn’t. Instead, the last future date & time at which a commit is possible is
‘2099-12-31T23:59:59+00:00’, as the following example code shows:

?
echo "More content" > non-empty-file.txt
git add .
GIT_COMMITTER_DATE="01 Jan 2100 00:00:00 +0000" git commit -m "Commit 2" --date
"01 Jan 2100 00:00:00 +0000"
GIT_COMMITTER_DATE="31 Dec 2099 23:59:60 +0000" git commit -m "Commit 2" --date
"31 Dec 2099 23:59:60 +0000"

The output of this is:

?
fatal: invalid date format: 01 Jan 2100 00:00:00 +0000

I don’t understand why the year change from 2099 to 2100 is the upper boundary
for the dates Git will process. To me, this seems a bit limiting since it’s
‘just’ ≈75½ years until then. (If you know why this limit has been chosen,
please share.)

In any case, printing an error message that claims a date format is invalid when
it’s not is a bug. I said ‘obscure bug’ in the title.

I reported the issue in the Git mailing list, but am not sure about how thigs
develop from here. Someone proposed a better error message and I very much
appreciate it.




SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



AGILE TESTING DAYS 2024 – PLANNED SESSIONS

Tue, May 14, 2024 StephanConferences Learning Testing No Comments

At Agile Testing Days 2024, I offer a full-full day tutorial, ‘The Disappearance
of J. T. Womblegast — A Git Tutorial‘ (on 19. Nov.). As the name suggests, the
tutorial is about working with Git. But it’s also a mystery journey about the
disappearance of some J.T. Womblegast who strangely left nothing but a Git
repository containing hints about this … retreat.

Additionally, I’m available for a 45-minute team coaching slot; see
https://agiletestingdays.com/groups/team-coaching/ for details. Possible topics
are:

 * Behaviour Driven Testing
 * Pair programming
 * Test Techniques
 * Test first
 * Test automation
 * Considering Ruby for test automation

Of course, other topics are possible. If you’d like to take this opportunity and
have any questions or suggestions, talk to the conference organisers (or me
directly).




SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



IT’S COMPLETE ‘SOFTWARE PEOPLE … WORK FROM HOME’

Thu, May 9, 2024 Stephanbook Projects No Comments

The community-written book ‘Software People … Work From Home — Insights &
Experiences From Planet Earth‘ is now complete. It contains contributions from
34 people and 28 countries (in alphabetical order):

 * Argentina
 * Australia
 * Canada
 * Denmark
 * Dubai
 * Finland
 * France
 * Germany
 * Greece
 * India
 * Italy
 * Lithuania
 * Luxemburg
 * Malaysia
 * Netherlands
 * New Zealand
 * Norway
 * Portugal
 * Russia
 * Scotland
 * Singapore
 * South Africa
 * Spain
 * Sweden
 * Tunisia
 * Turkey
 * USA
 * Wales

I thoroughly enjoyed ‘managing’ this writing project: Talking to so many people
from so many countries, figuring out a good way to generate preview PDF files
automatically and getting the feedback and contributions from so many people,
was just that: Enjoyable. Thanks everyone who was involved and everoy who got
the book already.

You can get it too: It’s avaiable at LeanPub for free at
https://leanpub.com/softwarepeopleworkfromhome

Enjoy!


SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



ADRESSING A NODE IN XML

Tue, February 6, 2024 StephanNote To Self No Comments

This is another note to my future self. For a project, I wanted to address a
given XML node of which I knew the name with something that resembled a path in
a folder structure.

Let’s say the XML file in question is this completely contrived example in a
file called ‘file.xml’:

?
<project>
  <test>
    <configuration>
      <url>
        http://example.com/test-system/
      </url>
      <parameters>
        <some_parameter>0</some_parameter>
        <another_parameter>1</another_parameter>
        <token>some_token_or_other</token>
        <answer>fortytwo</answer>
      </parameters>
    </configuration>
  </test>
</project>

I needed to reference a node in this file in a format like a path in the
directory structure, I.e. like ‘~/tmp/somefile.txt’ for a file ‘somefile.txt’
inside ‘tmp’ in the user’s home directory.

Surprisingly, the IDEs and editors I was using displayed this information, but I
couldn’t find a way to copy this to the clipboard.

I reverted to my go-to tool: Ruby (and the Nokogiri Ruby gem). In a Pry session,
I only needed these steps:

 1. Load & parse the XML file
 2. Find the node name I was looking for
 3. Get its parent node (and its parent elements…)
 4. Insert the node’s name at the beginning of the list
 5. Combine it into a String

Here’s the abbreviated Pry session:

?
> pry -r nokogiri
[1] pry(main)> d = Nokogiri::XML(File.open("file.xml"))
=> #(Document:0x140 {
  name = "document",
  --- 8< --- lines were cut out here --- 8< ---
[2] pry(main)> n = d.search('answer').first
=> #(Element:0x1f4 { name = "answer", children = [ #(Text "fortytwo")] })
[3] pry(main)> n.ancestors.map(&:name).unshift(n.name).reverse.join('/')
=> "document/project/test/configuration/parameters/answer"


SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



AGILE TESTING DAYS 2023 – A SUMMARY

Tue, November 21, 2023 StephanConferences Learning Testing Uncategorized No
Comments
The Agile Testing Days stage


DAY ‘0’: TUTORIAL & EVENING KEYNOTE

Note: I denote this as day zero since the conference starts counting the
conference days, with ‘day one’ being the first day after the tutorial day.

As every year, the Agile Testing Days start with a tutorial day. I chose
‘Breaking into AI and Machine Learning’ by Tariq King. The tutorial followed a
top-down approach. We did not have to (re-) learn linear algebra and the like
before getting started. Instead, after a brief introduction to the topic, we
could work on an example task: Classifying irises. A CSV file containing typical
attributes of various flower species was used to create a model that could
classify a flower as one of the species the model was trained on. Tariq
introduced this as the ‘Hello world of AI’.

We saw how overfitting a model can cause issues when a model is used with new
data it wasn’t trained on. This happens when the model matches the test data
(nearly) perfectly, which usually causes larger misclassifications when new data
is put into the model.

We also learned how models can be trained on images to classify them. This is
the next step since it requires processing much more data.

Then ChatGPT was introduced. While I am still a bit sceptical about some of its
output since it’s known to (for example) ‘hallucinate’ citations for scientific
papers. Yet, I am impressed with what can be achieved when it’s provided with
enough data and prompts tuned to its needs.

In the first keynote, Maaike Brinkhof wrapped the experiences in her software
testing career in the story of a role-playing game. In this setting, she met
increasingly hard-to-conquer ‘bosses’. Inspiring, entertaining – and providing
input for the following keynotes. In other words, It opened my mind for the
conference to come.


DAY 1 – NO OVERNIGHT SUCESS & SOCIOCRACY

In the day’s first keynote, Kristel Kruustuk presented her thoughts about ‘10x
Software Testing‘. My takeaway was this: You don’t become a ’10× tester’
overnight. Instead, it requires persistence and regular training. This matched
nicely with my personal experience and is linked to one of my sessions this
year.

The next session I attended was CraigRisi’s ‘Becoming an Open Sourcerer‘. He
explained what teams should consider when they use open-source software. He also
discussed the advantages and potential disadvantages of using open-source
software. Finally, we learned about contributing to open-source projects. While
contributing code changes is likely the most common way to contribute, providing
documentation is another essential aspect, as are providing and improving bug
reports and even (automated) tests.

The next keynote, ‘Could Agile Testers Help Debug Management?‘ by John Buck, was
about debugging organisations. I particularly like his explanation of consent:

> Consent means “Good enough for now, safe enough to try”
> 
> John Buck, Agile Testing Days 2023


As a tester, I’m unsure how to use this to debug management, and I will admit
that I haven’t tried it yet.


DAY 2 – WORKSHOP & INFOTAINMENT

I missed the first keynote of the day since the next scheduled time slot
included my workshop ‘Fun with U̡̟ͩ̊̏ͬͯni͑c͐̀͢od̲̎ͅḕ̶̩͙͆‘. Much to my pleasure,
it was well attended, and folks were surprised at how bad some software is with
processing Unicode. As Maaike tweeted:

> Biggest lesson so far at the Unicode workshop: good luck in life with
> computers if your name contains diacritics #agileTD
> 
> — Maaike Brinkhof (@Maaikees) November 15, 2023

Or, as Elizabeth Zagroba puts it:

After collecting my workshop material and winding down, I attended the keynote
‘Everyone is a Leader‘ by Zuzi Šochová. I liked how easy it was to follow along
and the message that everyone can be a leader – at some time, for some topic.
Leadership doesn’t have to be assigned but can be assumed temporarily when it
makes sense.

The following two keynotes were mindblowing! Dr. Rochelle Carr requested the
audience to ‘MOVE THAT WALL‘. This talk was loud and inspiring and made me think
about which walls I have that I may want to move – or tear down entirely.

‘Don’t go breaking my code‘, by Lena Nyström & Samuel Nitsche, was a keynote in
a musical or rock opera format: Loud, entertaining, and fun. It also explained
where and why testers and developers have different points of view. Not only
that, they also demonstrated ways to get along with each other better.

I ended the day by spending time at the Agile Testing Days Book Fair, organised
by Tobias Geyer and Maik Nogens. Thankfully, I got the books I was looking for:
Zuzi Šochvá’s ’The Agile Leader’ and John Buck’s ‘We The People’. They were even
kind enough to sign the books for me. Thank you!


DAY 3 – CONFLICT RESOLUTION, MICROPOWERS & JUDGMENT DAY

In the morning keynote ‘A Fighting Chance – Learning the Art of Conflict
Resolution‘, Alex Schladebeck presented pitfalls to avoid when dealing with
conflict and good ways to deal with them. Planned as a pair keynote, the second
speaker, Sophie Küster, couldn’t be at the conference. Sophie, you were missed,
and we all hope you’re back next year! My key takeaway: Noticing that someone
perceives a conflict goes a long way to mitigating it. – Especially if the
affected parties know about the pitfalls, such as saying, ‘You always/never do
XY’.

After this, Eveline Moolenaars and I prepared our talk ‘Micropowers: Learn to
Speak Up and Be Heard‘. This was about our shared experience of recovering from
cancer and its treatment and how that helped us to start asking for help – and
helping others. We found the term ‘superpower’ intimidating and came up with the
term ‘micropower’. We defined this as an ability one can trust that helps to act
when we see things that should be changed.

In the morning keynote, ’A Fighting Chance – Learning the Art of Conflict
Resolution’, Alex Schladebeck presented pitfalls to avoid when facing conflicts
and good ways to deal with them. Planned as a pair keynote, the second speaker,
Sophie Küster, couldn’t be at the conference. Sophie, you were missed, and we
all hope you’re back next year! My takeaway: Noticing that someone perceives a
conflict goes a long way to mitigating it. – Especially if the affected parties
know about the pitfalls, such as saying, ‘You always/never do XYZ’.

After this, Eveline Moolenaars and I prepared our talk ‘Micropowers: Learn to
Speak Up and Be Heard’. This was about our shared experience of recovering from
cancer and its treatment and how that helped us to start asking for help – and
helping others. We found the term ‘superpowers’ intimidating and came up with
the word ‘micropower’. We defined this as an ability one can trust that helps to
act when we see things that should be changed.

The keynote ‘Wait! That’s Not Tested’ by Heather Reid introduced the idea that
not all things need to be tested. We need to consider time, cost and risk when
testing software. And since there is never enough time to test everything
anyway, we must make bets. This connects nicely to John Buck’s definition of
consent: ‘Good enough for now, safe enough to try’.

The keynote, ‘The Rise of Generative AI: Judgment Day’ by Tariq King, was the
perfect ending to the official program since it nicely connected to my tutorial
day. He presented content (paintings and music) in pairs: One an original from a
human artis, the other one created by AI is the style of that artist. The
audience was tasked to tell which one was the original and which one the ‘copy’.
– I found it shocking that we, the audience, did not perform particularly well.

My overall impression of the Agile Testing Days: It was a very well-planned
conference, with sessions that connected ideas and concepts. I am already
looking forward to Agile Testing Days 2024 – and have many ideas for proposals
already. 

Thank you to everyone I have met and talked with this year. I hope to see you
again in 2024.


SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



RELOADING CSS IN A RAILS APP AUTOMATICALLY

Sun, October 22, 2023 StephanNote To Self Rails Ruby No Comments

Another installment of a #NoteToSelf.

To illustrate the topic of a workshop I’m preparing, I wrote a small Rails
(7.1.1) app that uses Tailwind CSS.

While preparing the application, I wanted to tailor the CSS of buttons, tables,
etc. and wondered why the layout didn’t change when I edited the CSS classes of
HTML elements. While the information about the formatting was present in the
HTML displayed, it did not affect how the page looked.

As an example, take this HTML snippet:

?
<h1 class="font-bold text-4xl text-green-800">New submitter</h1>

I expected the h1 tag to be displayed in a light font weight. After changing the
tag to

?
<h1 class="font-bold text-4xl text-red-800">New submitter</h1>

I expected the text to be red, and it wasn’t.

It took some searching to figure out that in config/environments/development.rb,
I had to add a set config.assets.debug to true:

?
config.assets.debug = true

After adding this line and restarting the Rails server, changes to the layout
were displayed immediately. Yay!
Details about this setting are documented at
https://guides.rubyonrails.org/asset_pipeline.html#turning-source-maps-on.




SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



WRITE MEANINGFUL ERROR MESSAGES IN AUTOMATED TESTS

Tue, February 14, 2023 StephanNote To Self Testing No Comments

Here’s a tip: Write your automated tests with the failure in mind. Especially,
consider a future maintainer who may need a useful error message. 

This can help when the test fails in the future (and it probably will). A
descriptive message helps understand the technical issue you’re looking at and
will ideally guide you to finding a solution.

Let’s look at some examples that leave something to be desired. These messages
may be true, but don’t help to understand the underlying problem:

 * Expected true, but got false
 * The result message is malformed
 * fail

Yes, I have seen these or very similar messages, that are rather useless. 

Imagine how much more helpful, the following messages are:

 * Expected condition XY to be true in context AB of object O
 * The message ‘<output the actual message>’, is malformed and cannot be
   processed further
 * Got <actual result> instead of <expected_result> when processing XY

These improved messages can guide you, help you remember the context and figure
out the underlying issue when the test fails.

I find that this improvement shortens the time spent with failure analysis. It
makes my days more productive because I get a message that tells me about the
context where thing went wrong. 

Do you have similar ideas about how to improve (automated) tests?
I’d love to hear about them.


SHARE THIS:

 * Twitter
 * Email
 * Print
 * 


LIKE THIS:

Like Loading...



POSTS PAGINATION

1 2 3 … 16 Next
Search for:





MEMBER OF THE AGILE TESTING FELLOWSHIP

Agile Testing Fellowship



TAGS

2020 Agile Testing Agile Testing Days collaboration command line Conference
Feedback LeanPub Learning macOS Ruby software testing Testing tools Word of the
year
Mastodon
Days Until the "Agile Testing Days" Counter


© 2012-2024 Stephan Kämper — Mastodon

MENU


NAVIGATION

 * Work With Me
 * Book A Workshop or Tutorial
 * About

Search for:


Privacy Preferences I Agree


PRIVACY PREFERENCE CENTER

Options
 * Consent Management
 * Cookie Settings

CONSENT MANAGEMENT



NECESSARY



ADVERTISING



ANALYTICS



OTHER





OK
 

Loading Comments...

 

Write a Comment...
Email (Required) Name (Required) Website

%d


SEARCH RESULTS

Magnifying Glass
Search
Close search results
FiltersShow filters
Sort by:
Relevance•Newest•Oldest


NO RESULTS FOUND


FILTER OPTIONS


SEARCH




ARCHIVES

 * August 2024
 * May 2024
 * February 2024
 * November 2023
 * October 2023
 * February 2023
 * January 2023
 * December 2022
 * November 2022
 * October 2022
 * June 2022
 * May 2022
 * February 2022
 * January 2022
 * November 2021
 * October 2021
 * August 2021
 * July 2021
 * May 2021
 * April 2021
 * March 2021
 * February 2021
 * January 2021
 * December 2020
 * November 2020
 * October 2020
 * July 2020
 * June 2020
 * May 2020
 * April 2020
 * March 2020
 * February 2020
 * November 2019
 * September 2019
 * August 2019
 * August 2017
 * December 2016
 * September 2016
 * April 2016
 * December 2015
 * November 2015
 * June 2015
 * May 2015
 * February 2015
 * January 2015
 * December 2014
 * November 2014
 * September 2014
 * July 2014
 * March 2014
 * February 2014
 * December 2013
 * September 2013
 * March 2013
 * February 2013
 * December 2012
 * November 2012
 * September 2012
 * July 2012
 * May 2012
 * April 2012
 * March 2012


MEMBER OF THE AGILE TESTING FELLOWSHIP




RECENT POSTS

 * Author and Committer Dates in Git – An Obscure Bug Sun, August 4, 2024
 * Agile Testing Days 2024 – Planned Sessions Tue, May 14, 2024
 * It’s complete ‘Software People … Work From Home’ Thu, May 9, 2024


CLASSIFIED AS…

2020 Agile Testing Agile Testing Days command line Conference Feedback LeanPub
Learning macOS Ruby software testing Testing tools


TWEETS…




BOOKS





ARCHIVES

 * August 2024
 * May 2024
 * February 2024
 * November 2023
 * October 2023
 * February 2023
 * January 2023
 * December 2022
 * November 2022
 * October 2022
 * June 2022
 * May 2022
 * February 2022
 * January 2022
 * November 2021
 * October 2021
 * August 2021
 * July 2021
 * May 2021
 * April 2021
 * March 2021
 * February 2021
 * January 2021
 * December 2020
 * November 2020
 * October 2020
 * July 2020
 * June 2020
 * May 2020
 * April 2020
 * March 2020
 * February 2020
 * November 2019
 * September 2019
 * August 2019
 * August 2017
 * December 2016
 * September 2016
 * April 2016
 * December 2015
 * November 2015
 * June 2015
 * May 2015
 * February 2015
 * January 2015
 * December 2014
 * November 2014
 * September 2014
 * July 2014
 * March 2014
 * February 2014
 * December 2013
 * September 2013
 * March 2013
 * February 2013
 * December 2012
 * November 2012
 * September 2012
 * July 2012
 * May 2012
 * April 2012
 * March 2012




BOOKS




MEMBER OF THE AGILE TESTING FELLOWSHIP




TWEETS…




CLASSIFIED AS…

2020 Agile Testing Agile Testing Days command line Conference Feedback LeanPub
Learning macOS Ruby software testing Testing tools
Close Search
Search powered by Jetpack