<?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: Josh Lavely</title>
    <description>The latest articles on DEV Community by Josh Lavely (@joshlavely).</description>
    <link>https://dev.to/joshlavely</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%2F1082983%2F4e8491be-b16f-4447-9e23-6c8c73a17e05.png</url>
      <title>DEV Community: Josh Lavely</title>
      <link>https://dev.to/joshlavely</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joshlavely"/>
    <language>en</language>
    <item>
      <title>My top reasons for using Blazor WASM</title>
      <dc:creator>Josh Lavely</dc:creator>
      <pubDate>Mon, 15 May 2023 19:00:16 +0000</pubDate>
      <link>https://dev.to/joshlavely/my-top-reasons-for-using-blazor-wasm-gbm</link>
      <guid>https://dev.to/joshlavely/my-top-reasons-for-using-blazor-wasm-gbm</guid>
      <description>&lt;p&gt;&lt;em&gt;This list is just a handful of really good things about Blazor Wasm and my experience with Blazor.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Native-Like Performance:
&lt;/h2&gt;

&lt;p&gt;Blazor WebAssembly (Wasm) PWAs offer near-native performance by executing directly in the browser, leveraging the full power of the client's hardware. This results in a smoother and more responsive user experience compared to React app PWAs, which rely on JavaScript execution and may suffer from performance limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Single Language for Frontend and Backend:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm allows developers to write both frontend and backend code in C#, enabling seamless code reuse and reducing the need for context switching between different programming languages. In contrast, React app PWAs require developers to use JavaScript for the frontend and often rely on separate backend technologies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Improved Development Productivity:
&lt;/h2&gt;

&lt;p&gt;With Blazor Wasm, developers can utilize their existing C# and .NET skills, benefiting from a rich ecosystem of tools and libraries. This familiarity and code reuse streamline development processes, reduce learning curves, and boost overall productivity. React app PWAs, on the other hand, involve learning and managing the React ecosystem, including JSX, state management libraries, and build configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enhanced Code Sharing:
&lt;/h2&gt;

&lt;p&gt;Blazor's shared code model allows developers to share code between the frontend and backend, resulting in reduced development efforts and improved maintainability. This is particularly advantageous for PWAs with complex business logic and data manipulation. React app PWAs often require separate codebases for the frontend and backend, increasing the complexity of code sharing and maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Improved Performance on Low-Bandwidth Networks:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm PWAs can provide a better user experience in low-bandwidth or unstable network conditions. Once the application is loaded, follow-up interactions require minimal network communication, as the bulk of the application logic is executed on the client-side. React app PWAs, on the other hand, rely on continuous communication with the server, leading to increased network traffic and potential performance degradation in constrained network environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Offline Capabilities:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm PWAs can leverage service workers and caching strategies to offer robust offline capabilities. By caching the necessary assets and data on the client-side, the application can continue to function even when the network connection is lost. React app PWAs require additional configuration and handling to achieve similar offline functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tight Integration with .NET Ecosystem:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm seamlessly integrates with the wider .NET ecosystem, including libraries, frameworks, and development tools. This allows developers to leverage existing resources, such as authentication and authorization libraries, database connectors, and unit testing frameworks, enhancing the overall development experience. React app PWAs may require additional integrations and configurations to achieve similar levels of compatibility with backend services and tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smaller Application Size:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm applications have smaller initial download sizes compared to React app PWAs. Blazor Wasm leverages WebAssembly and smart linking to optimize the size of the transferred code, resulting in faster initial loading times. React app PWAs, with their reliance on JavaScript bundles, often have larger download sizes, leading to increased load times and potential user frustration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-Platform Compatibility:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm PWAs can be deployed across multiple platforms and devices, including desktop, mobile, and IoT devices. The application code is executed within the browser, ensuring platform independence. React app PWAs, while also offering cross-platform capabilities, may require additional frameworks or adaptations to ensure consistent behavior across different platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security and Code Integrity:
&lt;/h2&gt;

&lt;p&gt;Blazor Wasm offers enhanced security by running the application code within the browser's sandboxed environment. This mitigates the risk of malicious code injection and ensures the integrity of the application. React app PWAs, with their reliance on JavaScript, may be more vulnerable to code tampering and security breaches if not properly secured.&lt;/p&gt;

&lt;p&gt;what are your thoughts about Blazor Wasm? give it a shot if you haven't yet; youll be surprised at how inthitive it feels.&lt;/p&gt;

</description>
      <category>webassembly</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Managing Automated Testing: Execution &amp; Implementation</title>
      <dc:creator>Josh Lavely</dc:creator>
      <pubDate>Mon, 15 May 2023 15:30:15 +0000</pubDate>
      <link>https://dev.to/joshlavely/managing-automated-testing-execution-implementation-547l</link>
      <guid>https://dev.to/joshlavely/managing-automated-testing-execution-implementation-547l</guid>
      <description>&lt;p&gt;When dealing with a large number of tests, optimizing the execution and implementation of those tests becomes a crucial step towards improving deployment cadence.&lt;/p&gt;

&lt;p&gt;Here are some strategies to optimize the execution of tests and ways to think differently about your tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Parallel Execution
&lt;/h3&gt;

&lt;p&gt;Divide your tests into multiple test suites and execute them in parallel. This approach allows multiple tests to run simultaneously, reducing the overall execution time. Tools like &lt;code&gt;cucumber-parallel&lt;/code&gt;or &lt;code&gt;cucumberjs-parallel&lt;/code&gt; can help us achieve reliable, parallel execution with Cucumber-JS, for example.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Isolation
&lt;/h3&gt;

&lt;p&gt;Ensure that your tests are independent and isolated from each other. Each test should not rely on the state or outcome of other tests. This allows tests to run in any order, providing flexibility for parallel execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selective Test Execution
&lt;/h3&gt;

&lt;p&gt;Identify subsets of tests that can be executed independently. You can group tests based on functionality, priority, or tags. By selectively executing relevant test subsets, you can save time by skipping unnecessary tests during certain runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimize Test Data Setup
&lt;/h3&gt;

&lt;p&gt;Consider optimizing the test data setup process. If setting up test data is time-consuming, explore options like database snapshots, test data caching, or database state management techniques to reduce the setup time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Efficient Test Fixtures
&lt;/h3&gt;

&lt;p&gt;Review your test fixtures to ensure they are optimized and do not introduce unnecessary overhead. This includes any pre-test or post-test actions, such as clearing caches or resetting states. Keep the fixture setup and teardown as minimal as possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manage Test Environment
&lt;/h3&gt;

&lt;p&gt;Take steps to optimize your test environment, such as configuring efficient resource allocation, leveraging cloud-based testing infrastructure, or using containerization technologies like Docker to create lightweight and reproducible test environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimize Browser Automation
&lt;/h3&gt;

&lt;p&gt;If your tests involve browser automation using Playwright, consider optimizing the browser launch and setup process. For example, you can reuse browser instances across multiple tests or launch browsers in headless mode to improve execution speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuous Integration and Test Distribution
&lt;/h3&gt;

&lt;p&gt;Integrate your test execution with a Continuous Integration (CI) system and distribute the test execution across multiple CI agents or nodes. This allows you to scale the execution capacity and leverage the infrastructure for faster test runs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance Testing
&lt;/h3&gt;

&lt;p&gt;Assess the performance and efficiency of your test suite. Identify any slow-running tests or test steps that can be optimized. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuously monitor and profile your test suite's performance to ensure it remains efficient over time&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Suite/ User Flow Prioritization
&lt;/h3&gt;

&lt;p&gt;Analyze your test suite and prioritize tests based on critical functionality, high-risk areas, or frequent code changes. By running the most critical tests first, you can gain faster feedback on important functionality while longer-running tests execute in the background.&lt;/p&gt;

&lt;p&gt;Remember to regularly review and update your test suite optimization strategies as your application evolves and your testing needs change.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>webdev</category>
      <category>cicd</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
