<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="278944" data-post-id="278944">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mindreframer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mindreframer/120/25559_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mindreframer
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/zachallaun" rel="nofollow">@zachallaun</a> WOW! I’ve tried it and now it feels buttery smooth! “Definitely worth pursuing”, as you’ve said. I think it’s ready to be tried out on real codebases.</p>
<p>Would you be open to a PR, that restarts Mneme.Server on each <code>Mneme.start()</code> call? I run my tests interactively in IEx and currently the call the Mneme.start() from the test_helper.exs fails on 2nd run and restarts the whole IEx process. This is the commit that implements it: <a href="https://github.com/mindreframer/mneme/commit/4c17f0360f2b6dea497a2878d252dfbae7347749" rel="noopener nofollow ugc">https://github.com/mindreframer/mneme/commit/4c17f0360f2b6dea497a2878d252dfbae7347749</a><br>
Also there are probably cleaner ways to do it <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278944" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-278944" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278944"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="278976" data-post-id="278976">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachallaun" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachallaun/120/29208_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachallaun
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="mindreframer" data-post="12" data-topic="54012">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mindreframer/48/25559_2.png" class="avatar"> mindreframer:</div>
<blockquote>
<p>Would you be open to a PR, that restarts Mneme.Server on each <code>Mneme.start()</code> call?</p>
</blockquote>
</aside>
<p>Definitely open to it or something like it, possibly behind an option to <code>Mneme.start()</code>. I need to put a bit more thought into how Mneme should be started anyways — right now it’s sort of just “simplest thing that works”.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278976" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-278976" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278976"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="278985" data-post-id="278985">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachallaun" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachallaun/120/29208_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachallaun
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/mindreframer" rel="nofollow">@mindreframer</a> I just <a href="https://github.com/zachallaun/mneme/commit/ae96acabd8a72bd0c43b96f678fea7bf71ca36a0" rel="noopener nofollow ugc">pushed a change to <code>main</code></a> that adds a <code>:restart</code> option. When you have a moment, would you mind trying it out and seeing if it does the trick?</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># test_helper.exs
ExUnit.start()
Mneme.start(restart: true)
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278985" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-278985" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278985"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="278992" data-post-id="278992">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mindreframer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mindreframer/120/25559_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mindreframer
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/zachallaun" rel="nofollow">@zachallaun</a> P-E-R-F-E-C-T! I’ve tried it and it “JUST WORKS”.<br>
Thanks for this package, looking forward to work with it on some real code.</p>
<p>You’ve made my day!  Thanks for the awesome “customer support” experience, it was really fun! I hope you’ll enjoy using <code>mnene</code> as much as I will <img src="https://forum.elixirforum.com/images/emoji/apple/grin.png?v=15" title=":grin:" class="emoji" alt=":grin:" loading="lazy" width="20" height="20"><br>
Have a nice day!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278992" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-278992" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278992"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="278993" data-post-id="278993">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachallaun" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachallaun/120/29208_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachallaun
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks so much for the kind words! Please let me know if you have any more feedback as you use it. In particular, if you ever find that the patterns being generated aren’t useful, please open an issue!</p>
<p>Edit: Released <code>v0.1.2</code> to include that <code>:restart</code> option. <img src="https://forum.elixirforum.com/images/emoji/apple/slightly_smiling_face.png?v=15" title=":slightly_smiling_face:" class="emoji" alt=":slightly_smiling_face:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="278993" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-278993" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="278993"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="279056" data-post-id="279056">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tcoopman" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tcoopman/120/8112_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tcoopman
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I just wanted to let you know that I’ve just tried using the tool and it’s awesome! Love it so far!!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279056" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-279056" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279056"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="279057" data-post-id="279057">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachallaun" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachallaun/120/29208_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachallaun
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you so much for the kind words, <a class="mention" href="/u/tcoopman" rel="nofollow">@tcoopman</a>!</p>
<p>I’m hoping to record a slightly longer screencast soon showing off some workflows that this enables. One I’ve been really enjoying is a kind of variant of REPL-driven development, where I have a pane open with a set of example calls to a function I’m working on using the <code>@mneme action: :accept</code> option to auto-accept changes. So as I work on it, I can just use a single keybinding and see all the calls update with whatever it’s currently returning.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@mneme action: :accept
test "wip" do
  auto_assert some_function(args1...)

  auto_assert some_function(args2...)

  auto_assert some_function(args3...)

  auto_assert some_function(args4...)
end
</code></pre>
<p>Then once everything is as I expect, I remove the <code>@mneme action: :accept</code> and refactor into more organized/useful tests.</p>
<p><em>Edit:</em> I actually just ran into some difficulty with this because Mneme selects the simplest pattern by default, so if you are doing the above with a function that returns a map, it’ll generate a <code>%{}</code> pattern, which doesn’t give you much information. I’ve just pushed a new <code>:default_pattern</code> option that can be used to specify which pattern should be selected:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@mneme action: :accept, default_pattern: :last
test "wip" do
  ...
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279057" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-279057" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279057"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="279095" data-post-id="279095">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Sebb" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Sebb/120/21818_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Sebb
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><img src="https://forum.elixirforum.com/images/emoji/apple/star_struck.png?v=15" title=":star_struck:" class="emoji" alt=":star_struck:" loading="lazy" width="20" height="20"> this. is. amazing.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279095" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-279095" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279095"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="279385" data-post-id="279385">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachallaun" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachallaun/120/29208_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachallaun
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks to everyone who’s tried this out so far. There have been several patch releases since I initially posted. Currently on v0.1.5, but all <a href="https://hexdocs.pm/mneme/changelog.html" rel="noopener nofollow ugc">changes since v0.1.0</a> summarized below:</p>
<h4><a name="p-279385-enhancements-1" class="anchor" href="#p-279385-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h4>
<ul>
<li>
<p>Dramatically reduce the performance gap between <code>auto_assert</code> and ExUnit’s <code>assert</code>.</p>
</li>
<li>
<p>Add a <code>:restart</code> option to <code>Mneme.start/1</code> to restart Mneme if called multiple times.</p>
</li>
<li>
<p>Add a <code>:default_pattern</code> configuration option for auto-assertions which controls the pattern that should be selected by default when prompted.</p>
</li>
<li>
<p>More consistent handling of charlists: lists of integers will now generate themselves as a pattern as well as a charlist if the list is ASCII printable (<a href="https://github.com/zachallaun/mneme/issues/6" rel="noopener nofollow ugc">#6</a>).</p>
</li>
</ul>
<h4><a name="p-279385-fixes-2" class="anchor" href="#p-279385-fixes-2" aria-label="Heading link" rel="nofollow"></a>Fixes</h4>
<ul>
<li>
<p>When converting an auto-assertion to an ExUnit assertion, select the identical pattern when the <code>:default_pattern</code> is <code>:infer</code> (set by default).</p>
</li>
<li>
<p>Fix a bug that could cause <code>auto_assert</code> expressions to revert to the previous value when using <code>Mneme.start(restart: true)</code> (<a href="https://github.com/zachallaun/mneme/issues/7" rel="noopener nofollow ugc">#7</a>).</p>
</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="279385" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-279385" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="279385"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="280785" data-post-id="280785">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachallaun" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachallaun/120/29208_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachallaun
                      <span class="op-star" title="Thread Starter">
                        <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                      </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Getting closer to the next sizable update to Mneme and wanted to share! After noticing that it can sometimes be difficult to visually parse what changed when an auto-generated value updates, I started working on semantic diffing, using the amazing <a href="https://github.com/Wilfred/difftastic" rel="noopener nofollow ugc">Difftastic</a> as reference and inspiration.</p>
<p>This has proved more of a rabbit hole than I initially thought, but is still <em>relatively</em> easy thanks to Elixir’s general awesomeness. Today I reached the point where my semantic diff development branch can start using semantic diffs to work on semantic diffs!</p>
<p>For instance, here’s what an update might look like using the latest release:</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/5/e/5e44f6bca919354c69a5714b1008802bd62668fd.png" data-download-href="https://forum.elixirforum.com/uploads/default/5e44f6bca919354c69a5714b1008802bd62668fd" title="image (1)" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/5/e/5e44f6bca919354c69a5714b1008802bd62668fd.png" alt="image (1)" data-base62-sha1="drWDsLPOLTWYgmzF4pWZObstSUt" width="690" height="447" data-dominant-color="2C3039"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image (1)</span><span class="informations">700×454 21.5 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>Here’s the same update using semantic diffs:</p>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/2/6/26e780c568e8bc32bd173ac22e18cbcc282e65bc.png" data-download-href="https://forum.elixirforum.com/uploads/default/26e780c568e8bc32bd173ac22e18cbcc282e65bc" title="image" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/original/3X/2/6/26e780c568e8bc32bd173ac22e18cbcc282e65bc.png" alt="image" data-base62-sha1="5ya8tPFuxFXaPyvZXWFUJlPNP6Q" width="626" height="443"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">image</span><span class="informations">626×443 22.1 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<p>There’s still a ways to go before this lands, but I’m hoping that being able to use semantic diffs in development will help expose edge-cases/etc. before I ship the feature.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="280785" data-batch-url="/posts/batch_likers">
                        8
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mneme-snapshot-testing-tool-for-the-busy-programmer/54012/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-280785" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="280785"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/54012/load_more?page=3">Load more posts</a>
</div></template></turbo-stream>