<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Souchet Céline</title>
    <description>The latest articles on DEV Community by Souchet Céline (@csouchet).</description>
    <link>https://dev.to/csouchet</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F470007%2Fe69d57cf-c57f-400f-9aac-ba859ab047b0.jpeg</url>
      <title>DEV Community: Souchet Céline</title>
      <link>https://dev.to/csouchet</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/csouchet"/>
    <language>en</language>
    <item>
      <title>Hacktoberfest 2022: Now, it's an official Process Analytics tradition!</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Wed, 16 Nov 2022 16:34:00 +0000</pubDate>
      <link>https://dev.to/process-analytics/hacktoberfest-2022-now-its-an-official-process-analytics-tradition-42p3</link>
      <guid>https://dev.to/process-analytics/hacktoberfest-2022-now-its-an-official-process-analytics-tradition-42p3</guid>
      <description>&lt;p&gt;Again this year, &lt;a href="https://medium.com/@process-analytics/hacktoberfest-2022-with-process-analytics-add185b50721"&gt;Process Analytics participated in Hacktoberfest 2022&lt;/a&gt; and we’d like to share what we consider to be a great success. This post highlights some contributions the project received, and we compare this year’s results with the results of Hacktoberfest 2021 👀.&lt;/p&gt;

&lt;p&gt;We offered the community the opportunity to work on our cornerstone &lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;bpmn-visualization TypeScript library&lt;/a&gt;, its related &lt;a href="https://github.com/process-analytics/bpmn-visualization-examples"&gt;examples repository&lt;/a&gt;, the project &lt;a href="https://github.com/process-analytics/process-analytics.dev"&gt;website&lt;/a&gt; and the &lt;a href="https://github.com/process-analytics/bpmn-visualization-R"&gt;bpmnVisualizationR package&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As part of the event, we updated our famous Hacktoberfest BPMN Diagram with the Hacktoberfest 2022 theme:&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/process-analytics" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--08zEJMG1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--JeH3vVs---/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/4716/70e50fc4-e519-49c3-b999-8fae1068a37d.png" alt="Process Analytics" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FrmhLKDj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--RYdC5Af6--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/924801/a022e999-2d9a-443b-afe2-5732423b5ea3.jpg" alt="" width="150" height="150"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/process-analytics/hacktoberfest-2022-with-process-analytics-818" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Hacktoberfest 2022 with Process Analytics&lt;/h2&gt;
      &lt;h3&gt;Nour Assy for Process Analytics ・ Sep 26 '22 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#typescript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#rlang&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#visualization&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  We are on Discord
&lt;/h2&gt;

&lt;p&gt;But before we talk about the contributions received, if you missed the &lt;a href="https://medium.com/@process-analytics/process-analytics-september-2022-news-d5d3a69830c6"&gt;September news&lt;/a&gt;, we have set up a &lt;a href="https://discord.com/invite/HafnBYsRXd"&gt;Discord&lt;/a&gt; server to more easily discuss topics of interest with the community of the Process Analytics project.&lt;/p&gt;

&lt;p&gt;It was very useful during the Hacktoberfest period, so we plan to keep it active indefinitely. Help us keep up the chat with your thoughts and ideas.&lt;/p&gt;

&lt;p&gt;ℹ️ Feel free to check the September news, or access the server directly to see the different channels currently available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hacktoberfest 2022 results
&lt;/h2&gt;

&lt;p&gt;As always happens, some contributions could not be completed due to lack of contributor’s time, or due to the complexity of a task. That is often the case with Hacktoberfest projects - it’s the way it works!&lt;/p&gt;

&lt;p&gt;Nevertheless, we would like to thank all the people who made an effort to contribute 🙏🏻. We warmly invite you to try again, at any time, and we’re more than happy to provide assistance 🙂.&lt;/p&gt;

&lt;p&gt;Now, let's talk about the contributions that were accepted.&lt;/p&gt;

&lt;h3&gt;
  
  
  bpmnVisualizationR package
&lt;/h3&gt;

&lt;p&gt;We had our &lt;a href="https://github.com/process-analytics/bpmn-visualization-R/pull/117"&gt;first external contribution&lt;/a&gt; on the &lt;a href="https://github.com/process-analytics/bpmn-visualization-R"&gt;bpmnVisualizationR package&lt;/a&gt; 🥳&lt;/p&gt;

&lt;p&gt;Many thanks to &lt;a href="https://github.com/ColinFay"&gt;ColinFay&lt;/a&gt;, an R specialist, working at &lt;a href="https://thinkr.fr/"&gt;ThinkR (Certifications et Formations au langage R)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Colin worked on adding automated tests to this package, and also gave us some tips on good practices 🤩.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples of the bpmn-visualization TypeScript library
&lt;/h3&gt;

&lt;p&gt;2 people contributed to the repository of the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js"&gt;bpmn-visualization&lt;/a&gt; examples.&lt;/p&gt;

&lt;p&gt;Thanks to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/educhastenier"&gt;Emmanuel Duchastenier&lt;/a&gt; who worked on: 

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/process-analytics/bpmn-visualization-examples/pull/408"&gt;improving the contributing guide&lt;/a&gt;, &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/process-analytics/bpmn-visualization-examples/pull/420"&gt;the replacement of the favicon&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/akantcheff"&gt;Adrien Kantcheff&lt;/a&gt; for &lt;a href="https://github.com/process-analytics/bpmn-visualization-examples/pull/411"&gt;adding an example of a project using Angular 14&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Website
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/educhastenier"&gt;Emmanuel Duchastenier&lt;/a&gt;’s &lt;a href="https://github.com/process-analytics/process-analytics.dev/pull/707"&gt;improvement of the contributing guide&lt;/a&gt; will make future contributions easier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advocacy
&lt;/h3&gt;

&lt;p&gt;As maintainers, we also had the privilege of contributing by advocating for our project, for Hacktoberfest and for the idea of open source contribution in general 😎.&lt;/p&gt;

&lt;p&gt;We organized multiple sessions with Data Science students who have no experience with open source contribution. Multiple students expressed interest and started learning our project domain: process analytics and BPMN.&lt;/p&gt;

&lt;p&gt;This was a rewarding experience for us 🥇. In addition to encouraging people to contribute to open source 💪, working with students forced us to speak a non/low-code language and to prepare a &lt;a href="https://dev.to/process-analytics/getting-started-with-bpmn-visualization-3dno"&gt;getting started tutorial&lt;/a&gt;  to using our libraries that is easy to follow for any beginner.&lt;/p&gt;

&lt;h2&gt;
  
  
  That’s all folks
&lt;/h2&gt;

&lt;p&gt;We were very happy to participate in Hacktoberfest 2022 🥰, to receive contributions and to get feedback from the contributors.&lt;/p&gt;

&lt;p&gt;​​We hope our contributors got their Hacktoberfest 👕 or planted a 🌳.&lt;/p&gt;

&lt;p&gt;We plan to participate again in 2023 🥳. In the meantime, feel free to contribute to the Process Analytics on GitHub or to contact us if you have any questions 👋.&lt;/p&gt;

&lt;p&gt;And don’t forget, to stay on top of the latest news and releases, follow us through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=blog"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discord: &lt;a href="https://discord.com/invite/HafnBYsRXd"&gt;Join our server!&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>bpmn</category>
      <category>visualization</category>
      <category>hacktoberfest</category>
      <category>github</category>
    </item>
    <item>
      <title>Dive Into Process Analytics at Bonita Day Paris</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Wed, 17 Aug 2022 12:58:25 +0000</pubDate>
      <link>https://dev.to/process-analytics/dive-into-process-analytics-at-bonita-day-paris-fnm</link>
      <guid>https://dev.to/process-analytics/dive-into-process-analytics-at-bonita-day-paris-fnm</guid>
      <description>&lt;p&gt;Today, process analysis is becoming an increasingly important part of the industry. Analysis techniques are becoming more diverse.&lt;/p&gt;

&lt;p&gt;However, there are no dedicated and well-defined visualization APIs for the visualization component of these process analysis results, which makes visualization customization (to meet specific needs) difficult.&lt;/p&gt;

&lt;p&gt;🔙In early 2020, Bonitasoft launched an initiative to make process analytics visualization more accessible and intuitive: &lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=video_bonita_day_paris_2022"&gt;Process Analytics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This project consists of &lt;strong&gt;open source libraries and components&lt;/strong&gt;, based on the BPMN process model, that help developers to create tools that can provide a visual overview of your business process and their execution data.&lt;/p&gt;




&lt;p&gt;During &lt;em&gt;Bonita Day&lt;/em&gt;, organized in Paris in early April 2022, we presented the Process Analytics project of Bonitasoft (in &lt;strong&gt;French 🇫🇷&lt;/strong&gt;). ℹ️ It was also made at &lt;em&gt;Bonita Day&lt;/em&gt; in Madrid in &lt;strong&gt;Spanish&lt;/strong&gt; 🇪🇸&lt;/p&gt;

&lt;p&gt;The presentation is designed to use Process Analytics libraries to help you understand how your business processes are executed and how to optimize them. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/0SbuozEcuRI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;📽 During this session, we showed the different components of the project available to you, as well as demonstrating a concrete integration case through a ticketing application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Presentation of the different components of the Process Analytics project&lt;/li&gt;
&lt;li&gt;Focus on the use of the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/"&gt;bpmn-visualization&lt;/a&gt; TypeScript library (provided by the Process Analytics project) to monitor processes&lt;/li&gt;
&lt;li&gt;Focus on the exploitation of the execution context of a process instance&lt;/li&gt;
&lt;li&gt;Focus on the exploration and navigation between the process and the administration pages of the Bonita Platform&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GbqdjuTe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tg7f1vyik643gx18ke1v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GbqdjuTe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tg7f1vyik643gx18ke1v.gif" alt="Usage example of Model Generation Application" width="880" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also talked about a bridge between the world of Process Mining and the world of BPM. The Process Analytics project has developed a tool to generate a process model (in both the classic Process Mining format and in the BPMN format) from event logs (XES format). With this tool, you can compare these 2 visualizations, and it’s useful to be able to use the generated process in a BPM platform.&lt;/p&gt;

&lt;p&gt;Go to the &lt;a href="https://process-analytics.dev/model-generation-application/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=video_bonita_day_paris_2022"&gt;Model Generation Application&lt;/a&gt; page to try it 🧪&lt;/p&gt;




&lt;p&gt;As mentioned above, the &lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=video_bonita_day_paris_2022"&gt;Process Analytics&lt;/a&gt; project is Open Source. So we will be more than happy to exchange ideas and more with you on the subject.&lt;/p&gt;

&lt;p&gt;Because who knows, if you feel like contributing (feature, bug, doc, etc), you are very welcome to do so! 🙂&lt;/p&gt;

&lt;p&gt;In the meantime, if you want to stay on top of the latest news and releases from the Process Analytics project, follow us through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website:&lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=news"&gt; https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter:&lt;a href="https://twitter.com/ProcessAnalyti1"&gt; @ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub:&lt;a href="https://github.com/process-analytics"&gt; https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>bpm</category>
      <category>analytics</category>
      <category>process</category>
      <category>eventlogs</category>
    </item>
    <item>
      <title>Model Generation Application</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Tue, 09 Aug 2022 08:31:08 +0000</pubDate>
      <link>https://dev.to/process-analytics/model-generation-application-e99</link>
      <guid>https://dev.to/process-analytics/model-generation-application-e99</guid>
      <description>&lt;p&gt;In our &lt;a href="https://medium.com/@process-analytics/process-analytics-may-2022-news-74b9a879d80e"&gt;May news&lt;/a&gt;, we announced 📣 our upcoming demonstration tool:  “&lt;a href="https://process-analytics.dev/model-generation-application/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=model_generation_app_offline"&gt;Model Generation Application&lt;/a&gt;”.&lt;/p&gt;

&lt;p&gt;Built with Process Analytics components, it is a &lt;a href="https://shiny.rstudio.com/"&gt;shiny R application&lt;/a&gt; that generates a process from event logs (in &lt;a href="https://xes-standard.org/"&gt;XES format&lt;/a&gt;), using 2 representations that can be used for comparison, with execution data (frequency): &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a basic Process Discovery view &lt;/li&gt;
&lt;li&gt;a BPMN diagram&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For both representations, it lets the user filter out noise that can be generated by the event log, depending on its quality.&lt;/p&gt;

&lt;p&gt;With the BPMN view, you can enrich the process semantics by doing gateway and task detection. &lt;br&gt;
And once the BPMN diagram is generated, you can use it in a BPM platform.&lt;/p&gt;

&lt;p&gt;⏩ Go to the &lt;a href="https://process-analytics.dev/model-generation-application/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=model_generation_app_offline"&gt;Model Generation Application&lt;/a&gt; page to learn more and try it out 🧪. We’re interested in your feedback!&lt;/p&gt;




&lt;p&gt;While waiting for the online version, if you want to stay up to date with the latest news and releases from the Process Analytics project, follow us :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=model_generation_app_offline"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>bpmn</category>
      <category>discovery</category>
      <category>generation</category>
      <category>analytics</category>
    </item>
    <item>
      <title>🇫🇷 Webinar: Dive into Process Analytics</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Fri, 05 Aug 2022 12:54:28 +0000</pubDate>
      <link>https://dev.to/process-analytics/webinar-dive-into-process-analytics-3lpk</link>
      <guid>https://dev.to/process-analytics/webinar-dive-into-process-analytics-3lpk</guid>
      <description>&lt;p&gt;The &lt;strong&gt;&lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=webinar_fr"&gt;Process Analytics project&lt;/a&gt;&lt;/strong&gt; consists of &lt;strong&gt;open source libraries and components&lt;/strong&gt; that allow you to get a visual overview of your business process and the process execution data.&lt;/p&gt;




&lt;p&gt;At the end of June 2022, Haris Subašić and Céline Souchet showcased an integration use case through a ticketing application, in French 🇫🇷.&lt;/p&gt;

&lt;p&gt;ℹ️ The presentation is designed to help you understand how your processes are executed and how to optimize your business processes. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/z49_5mDa2rk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🎥 Topics covered include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What different process components are available to you&lt;/li&gt;
&lt;li&gt;How the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/"&gt;bpmn-visualization&lt;/a&gt; TypeScript library can be used to monitor processes &lt;/li&gt;
&lt;li&gt;How to leverage execution context of processes&lt;/li&gt;
&lt;li&gt;How to drill down and navigate between the process and the Bonita administration pages&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;In the meantime, if you want to stay on top of the latest news and releases from the Process Analytics project, follow us through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=webinar_fr"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>bpmn</category>
      <category>visualization</category>
      <category>analytics</category>
      <category>replay</category>
    </item>
    <item>
      <title>🇬🇧 Webinar: Dive into Process Analytics</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Wed, 03 Aug 2022 15:27:00 +0000</pubDate>
      <link>https://dev.to/process-analytics/webinar-dive-into-process-analytics-i53</link>
      <guid>https://dev.to/process-analytics/webinar-dive-into-process-analytics-i53</guid>
      <description>&lt;p&gt;The &lt;strong&gt;&lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=webinar_en"&gt;Process Analytics project&lt;/a&gt;&lt;/strong&gt; consists of &lt;strong&gt;open source libraries and components&lt;/strong&gt; that allow you to get a visual overview of your business process and the process execution data.&lt;/p&gt;




&lt;p&gt;On July, 5th 2022, Alejandro Rondón and Thomas Bouffard showcased an integration use case through a ticketing application. &lt;/p&gt;

&lt;p&gt;ℹ️ The presentation is designed to help you understand how your processes are executed and how to optimize your business processes. &lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/p6NBiR2yc9o"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🎥 Topics covered include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What different process components are available to you&lt;/li&gt;
&lt;li&gt;How the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/"&gt;bpmn-visualization&lt;/a&gt; TypeScript library can be used to monitor processes&lt;/li&gt;
&lt;li&gt;How to leverage execution context of processes&lt;/li&gt;
&lt;li&gt;How to drill down and navigate between the process and the Bonita administration pages&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;In the meantime, if you want to stay on top of the latest news and releases from the Process Analytics project, follow us through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://process-analytics.dev/?utm_source=dev.to&amp;amp;utm_medium=display&amp;amp;utm_campaign=webinar_en"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>bpmn</category>
      <category>visualization</category>
      <category>analytics</category>
      <category>replay</category>
    </item>
    <item>
      <title>Process Analytics - June 2022 News</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Wed, 13 Jul 2022 09:49:23 +0000</pubDate>
      <link>https://dev.to/process-analytics/process-analytics-june-2022-news-1m7n</link>
      <guid>https://dev.to/process-analytics/process-analytics-june-2022-news-1m7n</guid>
      <description>&lt;p&gt;Welcome to the Process Analytics monthly news 👋.&lt;/p&gt;

&lt;p&gt;As you know, the goal of the Process Analytics project is to rapidly display meaningful Process Analytics components in your web pages using BPMN 2.0 notation and Open Source libraries.&lt;/p&gt;

&lt;p&gt;Summer is here 🌞. People in the northern hemisphere are happy not to see clouds ☁️ and rain 🌧️.&lt;/p&gt;

&lt;p&gt;On our side, the project team worked very hard in June to improve the bpmn-visualization TypeScript library 🤗. We also presented the project at several conferences and events. Let’s see what’s new here 👀!&lt;/p&gt;

&lt;h2&gt;
  
  
  Events
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bonita Day Paris
&lt;/h3&gt;

&lt;p&gt;At the beginning of April 2022, our team presented the Process Analytics project at the Bonita Day event in Paris, organized by Bonitasoft. &lt;/p&gt;

&lt;p&gt;The replay of this presentation in French is available 👇&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/0SbuozEcuRI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;ℹ️ For more information, see this &lt;a href="https://fr.bonitasoft.com/videos/bonita-day-paris-2022-apercu-de-process-analytics"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  FR Webinar: À la découverte de Process Analytics
&lt;/h3&gt;

&lt;p&gt;We also presented the Process Analytics project during a Webinar organized by Bonitasoft, at the end of June.&lt;/p&gt;

&lt;p&gt;In this presentation, we showed the different components of the project available to you, as well as a concrete integration case using a ticketing application as an example.&lt;/p&gt;

&lt;p&gt;The replay of this presentation in French is available on the &lt;a href="https://fr.bonitasoft.com/videos/a-la-decouverte-de-process-analytics"&gt;Bonitasoft website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;ℹ️ A webinar in English is &lt;a href="https://twitter.com/ProcessAnalyti1/status/1539513288228327428"&gt;planned for early July&lt;/a&gt; and another webinar &lt;em&gt;en español&lt;/em&gt; (in Spanish) will be scheduled in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonita Day Madrid
&lt;/h3&gt;

&lt;p&gt;At the end of June 2022, &lt;a href="https://www.linkedin.com/in/arondon/"&gt;Alejandro Rondon&lt;/a&gt; presented the Process Analytics project at the Bonita Day event in Madrid, organized by Bonitasoft. 🙏🏻 Big thanks to Alejandro. &lt;/p&gt;

&lt;p&gt;The event teaser is available 👇&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/612pHau24l8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  bpmn-visualization TypeScript library
&lt;/h2&gt;

&lt;p&gt;In June, we released 2 versions: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.24.1"&gt;0.24.1&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.25.0"&gt;0.25.0&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  New API: Filter pools at load time
&lt;/h3&gt;

&lt;p&gt;When calling the load method, it is now possible to filter the pools in the diagram you want to display.&lt;/p&gt;

&lt;p&gt;You can filter for one or several pools and specify the filtering options by pool id and/or name.&lt;/p&gt;

&lt;p&gt;In the following example 👇, we load the same diagram with different filter configurations. First we load without filtering, so we see the whole diagram. Then we filter different pools, one pool at a time. And finally, we filter 3 pools at the same time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VF8Sk2OX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/27200110/175942883-77c3943a-eb96-4ef1-958c-e38d2529981e.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VF8Sk2OX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/27200110/175942883-77c3943a-eb96-4ef1-958c-e38d2529981e.gif" alt="pool_filtering_at_load_time" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo page improvements
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Add a select button to switch the BPMN Theme
&lt;/h4&gt;

&lt;p&gt;It’s now possible to change the BPMN theme at runtime in the &lt;a href="https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/v0.25.0/demo/load-and-navigation/index.html"&gt;demo&lt;/a&gt; page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ur_bOLrz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/27200110/172772217-0d9e0803-b0a5-4cc0-be12-3ee961ac1293.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ur_bOLrz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/27200110/172772217-0d9e0803-b0a5-4cc0-be12-3ee961ac1293.gif" alt="The demo now allows to switch the BPMN theme" width="836" height="879"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Add a zoom reset button
&lt;/h4&gt;

&lt;p&gt;We also added a new button to reset the zoom level, very similar to the previous zoom in/out.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tLahhpzq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/27200110/171143957-45d2d243-12f9-4373-a5bc-cbc326507d50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tLahhpzq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/27200110/171143957-45d2d243-12f9-4373-a5bc-cbc326507d50.png" alt="The new zoom reset button" width="192" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Change the fill color of edge markers
&lt;/h4&gt;

&lt;p&gt;⏩ A &lt;a href="https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/v0.25.0/examples/custom-bpmn-theme/custom-edge-marker-colors/index.html"&gt;new example is available&lt;/a&gt; to demonstrate how to change the fill color of the edge markers.&lt;/p&gt;

&lt;h5&gt;
  
  
  Message Flows: Start (circle) and End (arrow) markers
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8BvQPiBQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/27200110/170682395-e2567bb3-039c-4701-af8c-72af463204b1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8BvQPiBQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/27200110/170682395-e2567bb3-039c-4701-af8c-72af463204b1.png" alt="Message Flows: Start (circle) and End (arrow) markers" width="880" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Sequence Flows: Conditional marker
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tJf3T_g5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/27200110/170682424-4dd6c2ea-3160-4088-b47e-bcc9f60d493e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tJf3T_g5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/27200110/170682424-4dd6c2ea-3160-4088-b47e-bcc9f60d493e.png" alt="Sequence Flows: Conditional marker" width="880" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Add a new project to demonstrate integration with Parcel
&lt;/h4&gt;

&lt;p&gt;This new project demonstrates the straightforward integration of bpmn-visualization in a TypeScript project built with &lt;a href="https://parceljs.org"&gt;Parcel v2&lt;/a&gt;. It also helps to improve project quality by detecting any integration errors prior to shipping new releases.&lt;/p&gt;

&lt;p&gt;For more information, see&lt;a href="https://github.com/process-analytics/bpmn-visualization-examples/pull/338"&gt; process-analytics/bpmn-visualization-examples#338&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  That’s all folks!
&lt;/h2&gt;

&lt;p&gt;We hope you enjoyed this June project news and are looking forward to what the rest of the summer will bring 👋.&lt;/p&gt;

&lt;p&gt;In the meantime, stay on top of the latest news and releases by following us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://process-analytics.dev/?utm_source=devto&amp;amp;utm_medium=display&amp;amp;utm_campaign=news"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Cover photo by &lt;a href="https://unsplash.com/photos/OVX3oiL5PsE?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Mick Haupt&lt;/a&gt; on&lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt; Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>news</category>
      <category>bpm</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Process Analytics - March 2022 News</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Tue, 03 May 2022 13:36:42 +0000</pubDate>
      <link>https://dev.to/process-analytics/process-analytics-march-2022-news-3862</link>
      <guid>https://dev.to/process-analytics/process-analytics-march-2022-news-3862</guid>
      <description>&lt;p&gt;Welcome to the Process Analytics monthly news 👋.&lt;/p&gt;

&lt;p&gt;As we remind you each month, the goal of the Process Analytics project is to rapidly display meaningful Process Analytics components in your web pages using BPMN 2.0 notation and Open Source libraries.&lt;/p&gt;

&lt;p&gt;In March, we worked on improving the bpmn-visualization TypeScript library and the bpmnVisualizationR package 🤗. Let’s see what’s new here 👀!&lt;/p&gt;

&lt;h2&gt;
  
  
  bpmn-visualization TypeScript library
&lt;/h2&gt;

&lt;p&gt;In March, we released 2 versions: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.22.0"&gt;0.22.0&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.23.0"&gt;0.23.0&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Improvements for TypeScript projects 📃
&lt;/h3&gt;

&lt;p&gt;We simplified the TypeScript integration by removing the need to install &lt;a href="https://github.com/typed-mxgraph/typed-mxgraph"&gt;typed-mxgraph&lt;/a&gt; in your project.&lt;/p&gt;

&lt;p&gt;It is now easier than ever to use &lt;a href="https://www.npmjs.com/package/bpmn-visualization"&gt;bpmn-visualization&lt;/a&gt; in TypeScript projects 🎉.&lt;/p&gt;

&lt;h3&gt;
  
  
  New API 📚
&lt;/h3&gt;

&lt;p&gt;It is possible to use the new API to retrieve the &lt;a href="https://www.npmjs.com/package/bpmn-visualization"&gt;bpmn-visualization&lt;/a&gt; and &lt;a href="https://github.com/jgraph/mxgraph"&gt;mxGraph&lt;/a&gt; versions used at runtime: &lt;em&gt;&lt;a href="https://process-analytics.github.io/bpmn-visualization-js/api/classes/BpmnVisualization.html#getVersion"&gt;getVersion()&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;An example of an integration is shown below 👇.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LxP8IU5U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/alvpixas18fnyvfnx988.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LxP8IU5U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/alvpixas18fnyvfnx988.png" alt="new API usage" width="500" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is done with the following JavaScript code that displays the version information in the footer of the page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Use the new “Version” API&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bpmnVisualization&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getVersion&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// bpmn-visualization version&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;versionAsString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`bpmn-visualization@&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lib&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// List all dependencies in the form of “dependency-1@version / dependency-2@version / ….”&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dependenciesAsString&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dependencies&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(([&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;@&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// “footer” is the html element that displays the version information&lt;/span&gt;
&lt;span class="nx"&gt;footer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;versionAsString&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; with &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;dependenciesAsString&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE&lt;/em&gt;&lt;/strong&gt;: This is helpful to debug projects that use a newer version of the &lt;a href="https://github.com/jgraph/mxgraph"&gt;mxGraph&lt;/a&gt; library which currently causes issues, like version 4.2.2.&lt;/p&gt;




&lt;h3&gt;
  
  
  BPMN rendering fixes ✅
&lt;/h3&gt;

&lt;p&gt;☢️ The library didn't accept the coordinates of the waypoints of the edges defined in the BPMN 2.0 source. Instead, it forced the usage of orthogonal edges which had a lot of side effects.&lt;/p&gt;

&lt;p&gt;The video below 👇 shows the behavior changes on message flows. The first part presents the rendering as it was done prior to the 0.23.0 version. The position of the message flow (and its label) sometimes changed depending on the zoom factor 😵‍💫. The same issue applied to overlays that were configured to be displayed at the middle of the edges. They were moved to the start or the end of the edge.&lt;/p&gt;

&lt;p&gt;The second part of the video is done using the 0.23.0 version. The edge segments are no longer always orthogonal and the position of the element remains unchanged, regardless of the zoom factor. 🥳&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--blsKdg14--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k0b3k6dpkrf6wfc7nqet.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--blsKdg14--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k0b3k6dpkrf6wfc7nqet.gif" alt="BPMN rendering fixes" width="740" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have a look at the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.23.0"&gt;release notes of the 0.23.0 version&lt;/a&gt; to get the complete list of issues that are fixed by removing the '&lt;strong&gt;always use orthogonal edges&lt;/strong&gt;' configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation improvement 🎁
&lt;/h3&gt;

&lt;p&gt;The icons used in the library are now available in &lt;strong&gt;SVG&lt;/strong&gt; format in the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/tree/611e3e45e3a14029e399247096cd27025496519a/docs/users/images/icons"&gt;docs/users/images/icons&lt;/a&gt; folder. Feel free to reuse the icons in your application.&lt;/p&gt;

&lt;p&gt;The user documentation has also been updated to display the icons.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qzaqvGyX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s4a9rjr23azlhvjgmfk5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzaqvGyX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s4a9rjr23azlhvjgmfk5.png" alt="Documentation improvement" width="799" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo improvement ✨
&lt;/h3&gt;

&lt;p&gt;The layout of the demo has been improved for mobile devices.&lt;/p&gt;

&lt;p&gt;The demo also displays the current versions of &lt;a href="https://www.npmjs.com/package/bpmn-visualization"&gt;bpmn-visualization&lt;/a&gt; and of the &lt;a href="https://github.com/jgraph/mxgraph"&gt;mxGraph&lt;/a&gt; library in the footer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XGrLNLL5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avuhgper4iv1iku2jns1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XGrLNLL5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avuhgper4iv1iku2jns1.png" alt="Demo improvement" width="623" height="1059"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  bpmnVisualizationR package
&lt;/h2&gt;

&lt;p&gt;In March, we released 1 version: &lt;a href="https://github.com/process-analytics/bpmn-visualization-R/releases/tag/v0.1.2"&gt;0.1.2&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The major change is the upgrade of the &lt;a href="https://www.npmjs.com/package/bpmn-visualization"&gt;bpmn-visualization&lt;/a&gt; TypeScript library to version 0.23.0. &lt;/p&gt;

&lt;h2&gt;
  
  
  That’s All Folks!
&lt;/h2&gt;

&lt;p&gt;We hope you enjoyed this March project news and are looking forward to what April will bring 👋.&lt;/p&gt;

&lt;p&gt;In the meantime, to stay on top of the latest news and releases, follow us through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://process-analytics.dev/?utm_source=devto&amp;amp;utm_medium=display&amp;amp;utm_campaign=news"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Cover photo by Dustin Humes on&lt;a href="https://unsplash.com/photos/2JozYOOMnCU"&gt; Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>news</category>
      <category>bpmn</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Using BPMN Visualization in R</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Thu, 14 Oct 2021 13:53:05 +0000</pubDate>
      <link>https://dev.to/process-analytics/using-bpmn-visualization-in-r-1e6b</link>
      <guid>https://dev.to/process-analytics/using-bpmn-visualization-in-r-1e6b</guid>
      <description>&lt;p&gt;With the &lt;a href="https://www.npmjs.com/package/bpmn-visualization" rel="noopener noreferrer"&gt;bpmn-visualization TypeScript library&lt;/a&gt;, you can visualize process execution data on &lt;a href="https://www.omg.org/spec/BPMN/2.0.2/" rel="noopener noreferrer"&gt;BPMN&lt;/a&gt; diagrams in a web browser, by adding custom overlays and customizing the style of the diagram.&lt;/p&gt;

&lt;p&gt;The new &lt;a href="https://github.com/process-analytics/bpmn-visualization-R" rel="noopener noreferrer"&gt;BPMN Visualization - R Package&lt;/a&gt; is being developed to offer another way to visualize process execution data in R.&lt;/p&gt;

&lt;p&gt;Let's see how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.rstudio.com/" rel="noopener noreferrer"&gt;R Studio&lt;/a&gt; or &lt;a href="https://cran.r-project.org/" rel="noopener noreferrer"&gt;R Console&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;First, you need to install the package from Github:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;h2&gt;
  
  
  Load a BPMN file
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;bpmnVisualization&lt;/strong&gt; package accepts a BPMN file in XML format.&lt;br&gt;
There are several ways to load this file. However, in this article, we will focus on how to load an example file from the package.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;p&gt;You will find the other ways to load a BPMN file in the &lt;a href="https://github.com/process-analytics/bpmn-visualization-R#load-the-bpmn-file" rel="noopener noreferrer"&gt;README&lt;/a&gt; of the package.&lt;/p&gt;

&lt;h2&gt;
  
  
  Display the BPMN diagram
&lt;/h2&gt;

&lt;p&gt;At the moment, there are 2 ways to display the BPMN diagram: &lt;strong&gt;Just the diagram without overlay&lt;/strong&gt; or &lt;strong&gt;The diagram with overlay(s)&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Just the diagram
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh74v2la1vyalm3eoqsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh74v2la1vyalm3eoqsa.png" alt="Just the diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The diagram with overlays
&lt;/h3&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foivuulqir8ta1t3se3zi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foivuulqir8ta1t3se3zi.png" alt="The diagram with overlays"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overlays customization and positioning will be possible in a future version of the package.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrate in a Shiny App
&lt;/h2&gt;

&lt;p&gt;You can also use the &lt;strong&gt;bpmnVisualization&lt;/strong&gt; package in a &lt;a href="https://shiny.rstudio.com/" rel="noopener noreferrer"&gt;Shiny app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you are not familiar with Shiny, it is an R package that makes it easy to build interactive web apps straight from R. You can host standalone apps on a webpage or embed them in &lt;a href="http://rmarkdown.rstudio.com/" rel="noopener noreferrer"&gt;R Markdown&lt;/a&gt; documents or build &lt;a href="http://rstudio.github.io/shinydashboard/" rel="noopener noreferrer"&gt;dashboards&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The following example displays a BPMN diagram provided as an example by the package, with an overlay on top of a BPMN element.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
 

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqaycw9fu79h8x4th722m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqaycw9fu79h8x4th722m.png" alt="Shiny App"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Participation in Hacktoberfest 2021
&lt;/h2&gt;

&lt;p&gt;If you want to participate in Hacktoberfest to promote Open Source development and you don't know where to make a contribution, you can try with the labeled &lt;a href="https://github.com/process-analytics/bpmn-visualization-R/issues?q=is%3Aopen+is%3Aissue+label%3Ahacktoberfest" rel="noopener noreferrer"&gt;issues&lt;/a&gt; from the &lt;strong&gt;BPMN Visualization - R Package&lt;/strong&gt; repository.&lt;/p&gt;

&lt;p&gt;We are also waiting for contributions in other repositories. For more information, see this &lt;a href="https://medium.com/@process-analytics/hacktoberfest-2021-with-process-analytics-44eecc238ead" rel="noopener noreferrer"&gt;article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have any questions - let us know directly on &lt;a href="https://github.com/process-analytics?type=source" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; issues or via &lt;a href="https://twitter.com/ProcessAnalyti1" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq13qsjqv1wvglq89a9v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq13qsjqv1wvglq89a9v.gif" alt="Hacktoberfest 2021"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Now, you have everything you need to start your first project with &lt;a href="https://github.com/process-analytics/bpmn-visualization-R" rel="noopener noreferrer"&gt;BPMN Visualization in R&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thank you for reading and I hope I helped or inspired you 😊&lt;/p&gt;

&lt;p&gt;We also plan to publish the BPMN Visualization package in &lt;a href="https://cran.r-project.org/" rel="noopener noreferrer"&gt;CRAN&lt;/a&gt; soon.&lt;/p&gt;

&lt;p&gt;Follow us to keep up to date on the latest news:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Website: &lt;a href="https://process-analytics.dev/" rel="noopener noreferrer"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1" rel="noopener noreferrer"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  GitHub: &lt;a href="https://github.com/process-analytics" rel="noopener noreferrer"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Process Analytics - September 2021 Newsletter</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Wed, 13 Oct 2021 14:34:59 +0000</pubDate>
      <link>https://dev.to/process-analytics/process-analytics-september-2021-newsletter-13pg</link>
      <guid>https://dev.to/process-analytics/process-analytics-september-2021-newsletter-13pg</guid>
      <description>&lt;p&gt;Welcome to the Process Analytics monthly newsletter 👋.&lt;/p&gt;

&lt;p&gt;The goal of the Process Analytics project is to rapidly display meaningful Process Analytics components in your web pages using BPMN 2.0 notation and Open Source libraries.&lt;/p&gt;

&lt;p&gt;Summer is over 🏖️, September was back to school 📚. October is Hacktoberfest 🍁. On our side, the project team worked hard to propose many new elements in our project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Website changes&lt;/li&gt;
&lt;li&gt;  Hacktoberfest 2021 participation&lt;/li&gt;
&lt;li&gt;  GitHub organization profile&lt;/li&gt;
&lt;li&gt;  New examples of the bpmn-visualization TypeScript library&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Website: add the News section
&lt;/h2&gt;

&lt;p&gt;Have you missed our past news? 😱 Don't worry, you can now access everything directly from the website home page. 😊&lt;/p&gt;

&lt;p&gt;Remember that we cross post all our news on both &lt;a href="https://medium.com/@process-analytics"&gt;Medium&lt;/a&gt; and &lt;a href="https://dev.to/process-analytics"&gt;Dev.to&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--anEDbItu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qrzawb86yczfsor0s2r9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--anEDbItu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qrzawb86yczfsor0s2r9.png" alt="The 'News' section in the website home page" width="880" height="511"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The 'News' section in the website home page&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Hacktoberfest participation as maintainers
&lt;/h2&gt;

&lt;p&gt;The Process Analytics team is participating in &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;br&gt;
2021&lt;/a&gt;, as we did for &lt;a href="https://dev.to/marcin_michniewicz/hacktoberfest-challenge-398g"&gt;Hacktoberfest 2020&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;🤔 What is Hacktoberfest?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hacktoberfest encourages participation in the open source community, which grows bigger every year.&lt;br&gt;
Hacktoberfest, in its 8th year, is a month-long celebration of open source software run by DigitalOcean. During the month of October, we invite you to join open-source software enthusiasts, beginners, and the developer community by contributing to open-source projects.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We prepared our project to be ready to welcome Hacktoberfest participants. This included updating examples and documentation, and polishing 🧹 the GitHub repositories.&lt;/p&gt;

&lt;p&gt;You can find more details about our participation in the following article:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/process-analytics" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--08zEJMG1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--JeH3vVs---/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/organization/profile_image/4716/70e50fc4-e519-49c3-b999-8fae1068a37d.png" alt="Process Analytics" width="150" height="150"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rnRqFfDn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--sKR9Z1ta--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/240356/baa124f1-7ad9-4bd9-8f8d-5ad3121effdd.jpeg" alt="" width="150" height="150"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/process-analytics/hacktoberfest-2021-with-process-analytics-241" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Hacktoberfest 2021 with Process Analytics&lt;/h2&gt;
      &lt;h3&gt;Thomas Bouffard for Process Analytics ・ Sep 30 '21 ・ 2 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#hacktoberfest&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#news&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bpmn&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#analytics&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  GitHub organization profile
&lt;/h2&gt;

&lt;p&gt;The GitHub profile highlights our main repositories ✨ and explains how you can easily contribute to Process Analytics. ⏩ See the &lt;a href="https://github.com/process-analytics/"&gt;live profile&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X2pNNFrp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vc6oldrbzif1b53zpgth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X2pNNFrp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vc6oldrbzif1b53zpgth.png" alt="Cheat Sheet for contributing to Process Analytics" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Cheat Sheet for contributing to Process Analytics&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  bpmn-visualization TypeScript library
&lt;/h2&gt;

&lt;p&gt;In September, we released 2 versions: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.19.1"&gt;0.19.1&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.19.2"&gt;0.19.2&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition to internal improvements, they include new examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two new live examples
&lt;/h3&gt;

&lt;p&gt;These new examples let you experiment with the bpmn-visualization integration and use the API directly in your browser. They can also be used as templates to demonstrate missing features or bugs.&lt;/p&gt;

&lt;p&gt;They are available on various platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://codesandbox.io/s/bpmn-visualization-sandbox-hpvq8"&gt;CodeSandbox&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://codepen.io/process-analytics/pen/YzQzROg"&gt;Codepen&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are not familiar with these live IDEs, visit the &lt;a href="https://codesandbox.io/docs/start"&gt;CodeSandbox documentation&lt;/a&gt; and the &lt;a href="https://blog.codepen.io/documentation/"&gt;CodePen documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With the proposed template 👇, you can test, for instance, the Overlays and style API. You will see the results in the browser in seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UY2KXGiJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2xsos4c4dsxp2uvmwf83.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UY2KXGiJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2xsos4c4dsxp2uvmwf83.gif" alt="Playing with the Codepen template" width="880" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Playing with the Codepen template&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Monitoring demo improvements
&lt;/h3&gt;

&lt;p&gt;The demo now uses a new design that also allows users to select the data types to add to the BPMN diagram: &lt;strong&gt;&lt;em&gt;Paths&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Overlays&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;Both&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The legend part has also been improved. It displays:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The legend titles&lt;/li&gt;
&lt;li&gt;  Only the legends related to the selected data types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jHGlnVUO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0yayo2gbbzsu620l6s7g.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jHGlnVUO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0yayo2gbbzsu620l6s7g.gif" alt="Improvements of the monitoring processes demo" width="880" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Improvements of the monitoring processes demo&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hacktoberfest 2021 theme demo revamped
&lt;/h3&gt;

&lt;p&gt;The Hacktoberfest demo has been updated to use the Hacktoberfest 2021 theme, which has a refreshed design. Using the selection buttons, it is now possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Easily change the theme (dark or light)&lt;/li&gt;
&lt;li&gt;  Choose the 2020 or 2021 flavor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to use the same kind of image to call for contributions for Hacktoberfest in your own project or access to the light and dark themes? ⏩ &lt;a href="https://cdn.statically.io/gh/process-analytics/bpmn-visualization-examples/v0.19.2/demo/hacktoberfest-custom-themes/index.html"&gt;Go to the live demo&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LIZBRYp4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrcv1aqbekwro216ohiu.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LIZBRYp4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nrcv1aqbekwro216ohiu.gif" alt="Choose your favorite Hacktoberfest Theme" width="880" height="429"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Choose your favorite Hacktoberfest Theme&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Plans for the future
&lt;/h3&gt;

&lt;p&gt;Here are the topics we will be managing in the coming months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Create new examples to demonstrate other Process analytics / Process Mining use cases.&lt;/li&gt;
&lt;li&gt;  Add more tests to be able to upgrade mxGraph (the technical library in charge of the final rendering) to the latest version.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  That's All Folks!
&lt;/h2&gt;

&lt;p&gt;We hope you enjoyed the September/October project news and are looking forward to what the rest of the fall will bring 👋.&lt;/p&gt;

&lt;p&gt;In the meantime, to stay on top of the latest news and releases, follow us through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Website: &lt;a href="https://process-analytics.dev/"&gt;https://process-analytics.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Twitter: &lt;a href="https://twitter.com/ProcessAnalyti1"&gt;@ProcessAnalyti1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  GitHub: &lt;a href="https://github.com/process-analytics"&gt;https://github.com/process-analytics&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Cover photo by&lt;/em&gt; &lt;a href="https://unsplash.com/photos/0yp3Vvkfb8E"&gt;Anne Nygård&lt;/a&gt; on &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>news</category>
      <category>hacktoberfest</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Automated visual regression testing with TypeScript, Playwright, Jest and Jest Image Snapshot</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Mon, 20 Sep 2021 12:22:18 +0000</pubDate>
      <link>https://dev.to/csouchet/automated-visual-regression-testing-with-typescript-playwright-jest-and-jest-image-snapshot-2b9c</link>
      <guid>https://dev.to/csouchet/automated-visual-regression-testing-with-typescript-playwright-jest-and-jest-image-snapshot-2b9c</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;As you know, to have automated visual regression tests (in addition to unit and integration tests) is important to ensure the users a good experience.&lt;br&gt;&lt;br&gt;
This assures that nothing is accidentally broken and confirms that user flows and the appearance of your application are functional when the existing code is modified or a dependency is updated.&lt;/p&gt;

&lt;p&gt;Recently, I wrote an article on &lt;a href="https://medium.com/nerd-for-tech/automated-visual-regression-testing-with-typescript-puppeteer-jest-and-jest-image-snapshot-9e14dd9d0fe7" rel="noopener noreferrer"&gt;visual regression testing with TypeScript, &lt;u&gt;Jest, Jest Image Snapshot and &lt;strong&gt;Puppeteer&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
If you use Puppeteer, you know that you can test only under Chromium.&lt;br&gt;
The implementation with Firefox is experimental, and Webkit is not supported at all.&lt;br&gt;&lt;br&gt;
Today, I will offer you an alternative to Puppeteer: &lt;strong&gt;Playwright&lt;/strong&gt;&lt;br&gt;
Playwright is pretty similar to Puppeteer. All the features present on Puppeteer are not yet present on Playwright. But the advantage with this tool is that you can run your tests on Chromium, Firefox, Webkit, Google Chrome &amp;amp; Microsoft Edge, and in addition with a single command.&lt;/p&gt;

&lt;p&gt;In this article, I will explain how to set up and to run tests with Playwright, in a TypeScript project, using Jest - as the test runner - and Jest-Image-Snapshot (Jest matcher) - to take screenshots of current web pages and to compare generated screenshots with a screenshot baseline to find regressions in the user interface.&lt;/p&gt;

&lt;p&gt;If you read my previous article, it will be pretty similar. &lt;/p&gt;
&lt;h1&gt;
  
  
  Project example
&lt;/h1&gt;

&lt;p&gt;I will use the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js" rel="noopener noreferrer"&gt;bpmn-visualization&lt;/a&gt; TypeScript library (version 0.13.0) as an example. (This example has been simplified so it shows more clearly the configuration and features explained in this article.) The goal of this project is to load BPMN content, and render it.&lt;br&gt;
Automated visual tests will simplify our life with each refactoring, addition of a new component, update of the positioning algorithm of the different BPMN elements, or update of the MxGraph rendering library.&lt;br&gt;
Also, I will configure the tests to run on Chromium, Firefox and Webkit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dd3fnp95jck1f4q31cv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dd3fnp95jck1f4q31cv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Prerequisites
&lt;/h1&gt;

&lt;p&gt;As first step, we need to install the required packages as&lt;br&gt;
devDependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Jest&lt;/strong&gt; + its type definition: A JavaScript Testing Framework&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://jestjs.io/" rel="noopener noreferrer"&gt;Jest&lt;/a&gt; is a fully featured testing framework, developed by Facebook. It needs very little configuration and works basically out of the box.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;npm install -D jest @types/jest&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Playwright&lt;/strong&gt;: A Node.js library to automate &lt;a href="https://playwright.dev/docs/browsers" rel="noopener noreferrer"&gt;Chromium, Firefox,Webkit, Google Chrome &amp;amp; Microsoft Edge&lt;/a&gt; with a single API. It is possible to perform most of the actions that are done manually on a browser and take screenshots.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;npm install -D playwright jest-playwright-preset&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt; + its type definition: A Jest matcher to perform image comparisons&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;npm i -D jest-image-snapshot @types/jest-image-snapshot&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;
  
  
  Configuration
&lt;/h1&gt;

&lt;p&gt;Let’s configure the previous libraries.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configure Jest
&lt;/h2&gt;

&lt;p&gt;I won't go into detail here on all the different ways to configure Jest.&lt;br&gt;
If you already use Jest for your unit/e2e tests, this is not new for you. If you would like more explanations about Jest, there are many great articles available.&lt;/p&gt;

&lt;p&gt;In this example, we have 4 Jest configurations: unit tests, integration tests, e2e tests and performance tests. We added the visual tests in the e2e test suite. Here, I will just explain how we configure Jest for the e2e tests.&lt;/p&gt;

&lt;p&gt;First, create the Jest configuration file (&lt;em&gt;jest.config.js&lt;/em&gt;) at &lt;strong&gt;./test/e2e&lt;/strong&gt; directory:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This configuration sets the root directory to the root project directory, runs &lt;em&gt;.ts&lt;/em&gt; files with ts-jest module and looks for &lt;em&gt;.spec.ts&lt;/em&gt; and &lt;em&gt;test.ts&lt;/em&gt; files under any subdirectory of &lt;strong&gt;./test/e2e&lt;/strong&gt; directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Playwright
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Specify the preset in the Jest configuration (&lt;em&gt;./test/e2e/jest.config.js&lt;/em&gt;), as specified in the &lt;a href="https://playwright.dev/docs/test-runners#jest--jasmine" rel="noopener noreferrer"&gt;official documentation of Playwright&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new file (&lt;em&gt;./test/e2e/jest-playwright.config.js&lt;/em&gt;) for the Playwright configuration to run the server &amp;amp; &lt;a href="https://playwright.dev/docs/api/class-browsertype#browsertypelaunchoptions" rel="noopener noreferrer"&gt;launch&lt;/a&gt; the browser once for all tests:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this configuration, we start a server on the port &lt;strong&gt;10002&lt;/strong&gt; with a timeout of 30s, and start 3 browsers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extend the Jest expect assertion mechanism to use Jest Image Snapshot
&lt;/h2&gt;

&lt;p&gt;This is the part that might be new, but with a little configuration, we will be ready soon.&lt;/p&gt;

&lt;p&gt;By default, &lt;strong&gt;Jest&lt;/strong&gt; doesn’t know anything about &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt; and its assertion &lt;strong&gt;toMatchImageSnapshot&lt;/strong&gt;. So we’ll need to extend Jest. For that, create a new file (&lt;em&gt;./test/e2e/jest.image.ts&lt;/em&gt;), like the following:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;To avoid extending Jest in each test file or import the previous file globally in all test files, we need to configure Jest to run it immediately after the test framework has been installed in the environment with &lt;a href="https://jestjs.io/docs/en/configuration#setupfilesafterenv-array" rel="noopener noreferrer"&gt;&lt;strong&gt;setupFilesAfterEnv&lt;/strong&gt;&lt;/a&gt; (Jest property) in &lt;em&gt;./test/e2e/jest.config.js&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Add a new command
&lt;/h2&gt;

&lt;p&gt;To simply the test execution, add the following script in the &lt;strong&gt;package.json&lt;/strong&gt; file:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Now, you can run your e2e tests with the following command: &lt;br&gt;
&lt;code&gt;npm run test:e2e&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: &lt;strong&gt;cross-env&lt;/strong&gt; is useful if you run the tests on different OS.&lt;/p&gt;
&lt;h1&gt;
  
  
  Test
&lt;/h1&gt;

&lt;p&gt;You can find the different properties to customize &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt; in its &lt;a href="https://github.com/americanexpress/jest-image-snapshot#%EF%B8%8F-api" rel="noopener noreferrer"&gt;README&lt;/a&gt; on Github.&lt;/p&gt;
&lt;h2&gt;
  
  
  Create a basic test with Jest-Image-Snapshot
&lt;/h2&gt;

&lt;p&gt;If everything is configured correctly, we are now ready to create our first visual regression test (&lt;em&gt;./test/e2e/bpmn.rendering.test.ts&lt;/em&gt;) by combining &lt;strong&gt;Playwright&lt;/strong&gt; and &lt;strong&gt;Jest&lt;/strong&gt; and &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt;!&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;After the test runs, a new directory will be created -&lt;br&gt;
&lt;strong&gt;__image_snapshots__&lt;/strong&gt; - with an image for each &lt;em&gt;toMatchImageSnapshot&lt;/em&gt; call. The name of the snapshot is computed by default with &lt;strong&gt;testPath&lt;/strong&gt;, &lt;strong&gt;currentTestName&lt;/strong&gt;, &lt;strong&gt;counter&lt;/strong&gt; and &lt;strong&gt;defaultIdentifier&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of generated snapshot:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e2dh97gr7ldlp2waf10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e2dh97gr7ldlp2waf10.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;bpmn-rendering-test-ts-no-bpmn-gateway-visual-regression-1-snap.png&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Make sure that the snapshot files are committed in your source control so that they are shared with other developers and CI environments.&lt;/p&gt;
&lt;h2&gt;
  
  
  Test on different machines
&lt;/h2&gt;

&lt;p&gt;One issue with one-to-one pixel matching is that there is a good chance that the test will be in error on a machine other than on which it was developed, because every environment has slightly different ways of rendering the same application.&lt;/p&gt;

&lt;p&gt;For example, suppose that we want to run the tests on the CI environment every time we create a pull request to the master branch in GitHub.&lt;br&gt;
Without any modifications to the code, the test is passed locally; but on the CI environment, it fails with a message like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Error: Expected image to match or be a close match to snapshot but was 0.0005804554357724534% different from snapshot (2.7861860917077763 differing pixels).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And a new image file for the diff is stored in the&lt;br&gt;
&lt;strong&gt;__image_snapshots__/__diff_output__&lt;/strong&gt; directory with the name &lt;strong&gt;&amp;lt;snapshot_name&amp;gt;-diff.png&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If we use the previous test, we’ll have something like this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4rlx8tq2ul0a86r7m7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4rlx8tq2ul0a86r7m7j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;bpmn-rendering-test-ts-no-bpmn-gateway-visual-regression-1-diff.png&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can modify the previous &lt;strong&gt;jest-image-snapshot&lt;/strong&gt; configuration (&lt;em&gt;./test/e2e/bpmn.rendering.test.ts&lt;/em&gt;), and update the value of &lt;em&gt;failureThreshold (default value: 0)&lt;/em&gt; &amp;amp; &lt;em&gt;failureThresholdType (default value: pixel)&lt;/em&gt;. These properties are used to calculate the threshold of tolerated differences (before the test fails).&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: If you increase the failure threshold too much, when there is too much difference between local and CI environments, it may be impossible to detect visual regressions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Order the snapshots
&lt;/h2&gt;

&lt;p&gt;If you have 10 or more tests, it can become complicated to find which screenshot corresponds to which test / feature in the directory &lt;strong&gt;__image_snapshots__&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Modify the &lt;strong&gt;customSnapshotsDir&lt;/strong&gt; property to have a different value according to the tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/helpers/image-snapshot-config.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/bpmn.rendering.test.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/bpmn.navigation.test.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reuse the snapshots
&lt;/h2&gt;

&lt;p&gt;Sometimes the expected result/snapshot is the same even after different actions. To avoid having a lot of identical snapshots in the Github repository, it’s better to reuse a snapshot.&lt;/p&gt;

&lt;p&gt;For that, it’s necessary to override the default &lt;strong&gt;customSnapshotIdentifier&lt;/strong&gt; &amp;amp; &lt;strong&gt;customDiffDir&lt;/strong&gt; properties.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;customSnapshotIdentifier&lt;/strong&gt;: the custom name to give this snapshot. This prevents the name of the snapshots from being computed with &lt;strong&gt;testPath&lt;/strong&gt;, &lt;strong&gt;currentTestName&lt;/strong&gt;, &lt;strong&gt;counter&lt;/strong&gt; and &lt;strong&gt;defaultIdentifier&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;customDiffDir&lt;/strong&gt;: the custom absolute path of a directory to keep this diff in. As we use the same snapshot in different tests, to know which diff file corresponds to which test, we need to set a different value according to the tests.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/helpers/image-snapshot-config.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/diagram.rendering.test.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;With so many operating systems, web browsers, and screen resolutions, Visual Testing can be a powerful tool to assure that an application works well in all possible environments. It is definitely worth trying it as a complement to other sets of tests.&lt;/p&gt;

&lt;p&gt;Now, you have everything you need to start your first visual regression test in TypeScript with Jest &amp;amp; Playwright.&lt;/p&gt;

&lt;p&gt;Thank you for reading and I hope I helped or inspired you :)&lt;/p&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Github repository of bpmn-visualization: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js" rel="noopener noreferrer"&gt;https://github.com/process-analytics/bpmn-visualization-js&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github repository of Jest-image-snapshot: &lt;a href="https://github.com/americanexpress/jest-image-snapshot" rel="noopener noreferrer"&gt;https://github.com/americanexpress/jest-image-snapshot&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Playwright documentation: &lt;a href="https://playwright.dev/" rel="noopener noreferrer"&gt;https://playwrightdev/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Main image made with: &lt;a href="https://www.canva.com" rel="noopener noreferrer"&gt;https://www.canva.com&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>typescript</category>
      <category>playwright</category>
      <category>jest</category>
      <category>testing</category>
    </item>
    <item>
      <title>Automated visual regression testing with TypeScript, Puppeteer, Jest and Jest Image Snapshot</title>
      <dc:creator>Souchet Céline</dc:creator>
      <pubDate>Fri, 16 Apr 2021 16:14:16 +0000</pubDate>
      <link>https://dev.to/csouchet/automated-visual-regression-testing-with-typescript-puppeteer-jest-and-jest-image-snapshot-3n0f</link>
      <guid>https://dev.to/csouchet/automated-visual-regression-testing-with-typescript-puppeteer-jest-and-jest-image-snapshot-3n0f</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;As developers, it is our job to ensure that our users get an experience with no regression.&lt;br&gt;&lt;br&gt;
Like any good developer, when I add a feature or fix a bug, I also create unit, integration, and end-to-end tests. This assures that, when the existing code is modified, nothing is accidentally broken, and confirms that user flows are functional.&lt;/p&gt;

&lt;p&gt;Like many people, I've gotten used to using a manual process to visually check that the design looks as intended.&lt;/p&gt;

&lt;p&gt;Refactoring, adding a new component, or updating a package can sometimes change the appearance of the application. It can get laborious to click through every possible user journey, and we are not immune to forgetting a test or to miss a small visual change.&lt;/p&gt;

&lt;p&gt;So how can we make sure that the visuals are always correct and less painful to test? I had heard of automatic testing for no visual regression before. I looked into using Selenium some time ago, but changed projects and no longer needed it.&lt;/p&gt;

&lt;p&gt;Now that I have a need for visual checks in my current project, I’ve found there are different libraries - easy to learn - that can take screenshots of current web pages and compare generated screenshots with a screenshot baseline to find regressions in the user interface (UI).&lt;/p&gt;

&lt;p&gt;In this article, I will explain how to use one of these libraries - Jest-Image-Snapshot (Jest matcher) - in a Typescript project.&lt;/p&gt;
&lt;h1&gt;
  
  
  Project example
&lt;/h1&gt;

&lt;p&gt;I will use the &lt;a href="https://github.com/process-analytics/bpmn-visualization-js" rel="noopener noreferrer"&gt;&lt;u&gt;bpmn-visualization&lt;/u&gt;&lt;/a&gt; TypeScript library (version 0.10.0) as an example. (This example has been simplified so it shows more clearly the configuration and features explained in this article.) The goal of this project is to load BPMN content, and render it. &lt;br&gt;
Automated visual tests will simplify our life with each refactoring, addition of a new component, update of the positioning algorithm of the different BPMN elements, or update of the MxGraph rendering library.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fobyz4kbyl2n1c1xxwrbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fobyz4kbyl2n1c1xxwrbf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Prerequisites
&lt;/h1&gt;

&lt;p&gt;As first step, we need to install the required packages as devDependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Jest&lt;/strong&gt; + its type definition: A JavaScript Testing Framework&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://jestjs.io/" rel="noopener noreferrer"&gt;&lt;u&gt;Jest&lt;/u&gt;&lt;/a&gt; is a fully featured testing framework, developed by Facebook. It needs very little configuration and works basically out of the box.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;npm install -D jest @types/jest&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Puppeteer&lt;/strong&gt; + its type definition: A Node library to control Chrome or Chromium, both in headless mode and with a user interface. It is possible to perform most of the actions that are done manually on a browser and take screenshots.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;npm install -D puppeteer @types/puppeteer jest-puppeteer&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt; + its type definition: A Jest matcher to perform image comparisons&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;npm i -D jest-image-snapshot @types/jest-image-snapshot&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;
  
  
  Configuration
&lt;/h1&gt;

&lt;p&gt;Let’s configure the previous libraries.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configure Jest
&lt;/h2&gt;

&lt;p&gt;I won't go into detail here on all the different ways to configure Jest.&lt;br&gt;
If you already use Jest for your unit/e2e tests, this is not new for you. If you would like more explanations about Jest, there are many great articles available.&lt;/p&gt;

&lt;p&gt;In this example, we have 3 Jest configurations: unit tests, e2e tests, and performance tests. We added the visual tests in the e2e test suite.&lt;br&gt;
Here I will just explain how we configure Jest for the e2e tests.&lt;/p&gt;

&lt;p&gt;First, create the Jest configuration file (&lt;em&gt;jest.config.js&lt;/em&gt;) at &lt;strong&gt;./test/e2e&lt;/strong&gt; directory:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This configuration sets the root directory to the root project directory, runs &lt;em&gt;.ts&lt;/em&gt; files with ts-jest module and looks for &lt;em&gt;.spec.ts&lt;/em&gt; and &lt;em&gt;test.ts&lt;/em&gt; files under any subdirectory of &lt;strong&gt;./test/e2e&lt;/strong&gt; directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Puppeteer
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Specify the preset in the Jest configuration (&lt;em&gt;./test/e2e/jest.config.js&lt;/em&gt;), as specified in the &lt;a href="https://jestjs.io/docs/en/puppeteer" rel="noopener noreferrer"&gt;official documentation of Jest&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a new file (&lt;em&gt;./test/e2e/jest-puppeteer.config.js&lt;/em&gt;) for the Puppeteer configuration to run the server &amp;amp; &lt;a href="https://pptr.dev/#?product=Puppeteer&amp;amp;version=v5.5.0&amp;amp;show=api-puppeteerlaunchoptions" rel="noopener noreferrer"&gt;launch&lt;/a&gt; the browser once for all tests:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this configuration, we start a server on the port &lt;strong&gt;10002&lt;/strong&gt; with a timeout of 30s, start a browser with a timeout of 2 minutes, and pipe the browser process stdout and stderr into &lt;strong&gt;process.stdout&lt;/strong&gt; and &lt;strong&gt;process.stderr&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Extend the Jest expect assertion mechanism to use Jest Image Snapshot
&lt;/h2&gt;

&lt;p&gt;This is the part that might be new, but with a little configuration, we will be ready soon.&lt;/p&gt;

&lt;p&gt;By default, &lt;strong&gt;Jest&lt;/strong&gt; doesn’t know anything about &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt; and its assertion &lt;strong&gt;toMatchImageSnapshot&lt;/strong&gt;. So we’ll need to extend Jest. For that, create a new file (&lt;em&gt;./test/e2e/jest.image.ts&lt;/em&gt;), like the following:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;To avoid extending Jest in each test file or import the previous file globally in all test files, we need to configure Jest to run it immediately after the test framework has been installed in the environment with &lt;a href="https://jestjs.io/docs/en/configuration#setupfilesafterenv-array" rel="noopener noreferrer"&gt;&lt;strong&gt;setupFilesAfterEnv&lt;/strong&gt;&lt;/a&gt; (Jest property) in &lt;em&gt;./test/e2e/jest.config.js&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  Add a new command
&lt;/h2&gt;

&lt;p&gt;To simply the test execution, add the following script in the &lt;strong&gt;package.json&lt;/strong&gt; file:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Now, you can run your e2e tests with the following command:&lt;br&gt;
&lt;code&gt;npm run test:e2e&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: &lt;strong&gt;cross-env&lt;/strong&gt; is useful if you run the tests on different OS.&lt;/p&gt;
&lt;h1&gt;
  
  
  Test
&lt;/h1&gt;

&lt;p&gt;You can find the different properties to customize &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt; in its &lt;a href="https://github.com/americanexpress/jest-image-snapshot#%EF%B8%8F-api" rel="noopener noreferrer"&gt;README&lt;/a&gt; on Github.&lt;/p&gt;
&lt;h2&gt;
  
  
  Create a basic test with Jest-Image-Snapshot
&lt;/h2&gt;

&lt;p&gt;If everything is configured correctly, we are now ready to create our first visual regression test (&lt;em&gt;./test/e2e/bpmn.rendering.test.ts&lt;/em&gt;) by combining &lt;strong&gt;Puppeteer&lt;/strong&gt; and &lt;strong&gt;Jest&lt;/strong&gt; and &lt;strong&gt;Jest-Image-Snapshot&lt;/strong&gt;!&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;After the test runs, a new directory will be created -&lt;br&gt;
&lt;strong&gt;__image_snapshots__&lt;/strong&gt; - with an image for each &lt;em&gt;toMatchImageSnapshot&lt;/em&gt; call. The names of the snapshots are computed by default with &lt;strong&gt;testPath&lt;/strong&gt;, &lt;strong&gt;currentTestName&lt;/strong&gt;, &lt;strong&gt;counter&lt;/strong&gt; and &lt;strong&gt;defaultIdentifier&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of generated snapshot:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakwk1ojiu69wrkvhh7mn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakwk1ojiu69wrkvhh7mn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;bpmn-rendering-test-ts-no-bpmn-gateway-visual-regression-1-snap.png&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Make sure that the snapshot files are committed in your source control so they are shared with other developers and CI environments.&lt;/p&gt;
&lt;h2&gt;
  
  
  Test on different machines
&lt;/h2&gt;

&lt;p&gt;One issue with one-to-one pixel matching is that there is a good chance that the test will be in error on a machine other than on which it was developed, because every environment has slightly different ways of rendering the same application.&lt;/p&gt;

&lt;p&gt;For example, suppose that we want to run the tests on the CI environment every time we create a pull request to the master branch in GitHub.&lt;br&gt;
Without any modifications to the code, the test is passed locally; but on the CI environment, it fails with a message like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Error: Expected image to match or be a close match to snapshot but was 0.0005804554357724534% different from snapshot (2.7861860917077763 differing pixels).&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And a new image file for the diff is stored in the &lt;strong&gt;__image_snapshots__/__diff_output__&lt;/strong&gt; directory with the name &lt;strong&gt;&amp;lt;snapshot_name&amp;gt;-diff.png&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If we use the previous test, we’ll have something like this:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp08p9qxwlxsd9ap6opju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp08p9qxwlxsd9ap6opju.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;bpmn-rendering-test-ts-no-bpmn-gateway-visual-regression-1-diff.png&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You can modify the previous &lt;strong&gt;jest-image-snapshot&lt;/strong&gt; configuration (&lt;em&gt;./test/e2e/bpmn.rendering.test.ts&lt;/em&gt;), and update the value of &lt;em&gt;failureThreshold (default value: 0)&lt;/em&gt; &amp;amp; &lt;em&gt;failureThresholdType (default value: pixel)&lt;/em&gt;. These properties are used to calculate the threshold of tolerated differences (before the test fails).&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: If you increase the failure threshold too much, when there is too much difference between local and CI environments, it may be impossible to detect visual regressions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Order the snapshots
&lt;/h2&gt;

&lt;p&gt;If you have 10 or more tests, it can become complicated to find which screenshot corresponds to which test/feature in the directory &lt;strong&gt;__image_snapshots__&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Modify the &lt;strong&gt;customSnapshotsDir&lt;/strong&gt; property to have a different value according to the tests.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/helpers/visu-utils.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/bpmn.rendering.test.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/bpmn.navigation.test.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reuse the snapshots
&lt;/h2&gt;

&lt;p&gt;Sometimes the expected result/snapshot is the same even after different actions. To avoid having a lot of identical snapshots in the Github repository, it’s better to reuse a snapshot.&lt;/p&gt;

&lt;p&gt;For that, it’s necessary to override the default &lt;strong&gt;customSnapshotIdentifier&lt;/strong&gt; &amp;amp; &lt;strong&gt;customDiffDir&lt;/strong&gt; properties.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;customSnapshotIdentifier&lt;/strong&gt;: the custom name to give this snapshot. This prevents the name of the snapshots from being computed with &lt;strong&gt;testPath&lt;/strong&gt;, &lt;strong&gt;currentTestName&lt;/strong&gt;, &lt;strong&gt;counter&lt;/strong&gt; and &lt;strong&gt;defaultIdentifier&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;customDiffDir&lt;/strong&gt;: the custom absolute path of a directory to keep this diff in. As we use the same snapshot in different tests, to know which diff file corresponds to which test, we need to set a different value according to the tests.   &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/helpers/visu-utils.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;./test/e2e/diagram.rendering.test.ts&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;With so many operating systems, web browsers, and screen resolutions, Visual Testing can be a powerful tool to assure that an application works well in all possible environments. It is definitely worth trying it as a complement to other sets of tests.&lt;/p&gt;

&lt;p&gt;Now you have everything you need to start your first visual regression test in Typescript with Jest &amp;amp; Puppeteer.&lt;/p&gt;

&lt;p&gt;Thank you for reading and I hope I helped or inspired you :)&lt;/p&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Github repository of bpmn-visualization: &lt;a href="https://github.com/process-analytics/bpmn-visualization-js" rel="noopener noreferrer"&gt;&lt;u&gt;https://github.com/process-analytics/bpmn-visualization-js&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github repository of Jest-image-snapshot: &lt;a href="https://github.com/americanexpress/jest-image-snapshot" rel="noopener noreferrer"&gt;&lt;u&gt;https://github.com/americanexpress/jest-image-snapshot&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Puppeteer documentation: &lt;a href="https://pptr.dev/" rel="noopener noreferrer"&gt;&lt;u&gt;https://pptr.dev/&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to use Puppeteer with Jest: &lt;a href="https://jestjs.io/docs/en/puppeteer" rel="noopener noreferrer"&gt;&lt;u&gt;https://jestjs.io/docs/en/puppeteer&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Main image made with: &lt;a href="https://www.canva.com" rel="noopener noreferrer"&gt;&lt;u&gt;https://www.canva.com&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>jest</category>
      <category>typescript</category>
      <category>puppeteer</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
