<?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>Forem: Nimesha Kumarapperuma </title>
    <description>The latest articles on Forem by Nimesha Kumarapperuma  (@kanimesha99).</description>
    <link>https://forem.com/kanimesha99</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%2F741005%2Fad46bdf3-be44-4d80-9e61-b6ac12749e24.jpg</url>
      <title>Forem: Nimesha Kumarapperuma </title>
      <link>https://forem.com/kanimesha99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kanimesha99"/>
    <language>en</language>
    <item>
      <title>CAPTCHA Tried to Stop Me: How MailSlurp Saved Email Tests</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Sun, 08 Feb 2026 06:06:18 +0000</pubDate>
      <link>https://forem.com/kanimesha99/captcha-tried-to-stop-me-how-mailslurp-saved-email-tests-2gg8</link>
      <guid>https://forem.com/kanimesha99/captcha-tried-to-stop-me-how-mailslurp-saved-email-tests-2gg8</guid>
      <description>&lt;h2&gt;
  
  
  MailSlurp 101:
&lt;/h2&gt;

&lt;p&gt;Email verification is one of the most difficult tasks to automate in automated testing. OTP codes, password reset emails, sign-up links, and magic links typically lead to genuine inboxes like Gmail or Outlook, which are not conducive to automation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mailslurp.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Mailslurp&lt;/strong&gt;&lt;/a&gt; changes the game at this point.&lt;/p&gt;

&lt;p&gt;An email testing tool and API called MailSlurp enables testers to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make short-term email accounts&lt;/li&gt;
&lt;li&gt;Get actual emails that the application has sent.&lt;/li&gt;
&lt;li&gt;Use API calls to read email content.&lt;/li&gt;
&lt;li&gt;Extract attachments, URLs, OTPs, and more&lt;/li&gt;
&lt;li&gt;Safely use emails in automation systems such as:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Playwright
2. Selenium 
3. Cypress
4. Appium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An automation script can read emails programmatically in seconds, eliminating the need to manually check a real Gmail mailbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MailSlurp for Automation Testing?
&lt;/h2&gt;

&lt;p&gt;1.Completely Automated Email Testing&lt;/p&gt;

&lt;p&gt;Test can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Establish an inbox.&lt;/li&gt;
&lt;li&gt;Send an email using the app.&lt;/li&gt;
&lt;li&gt;Automatically read the email.&lt;/li&gt;
&lt;li&gt;Retrieve the verification link and OTP.&lt;/li&gt;
&lt;li&gt;Proceed with the test flow.&lt;/li&gt;
&lt;li&gt;No manual labor is required.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.No Real Gmail / Outlook Dependency&lt;/p&gt;

&lt;p&gt;Not required to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Passwords for stores&lt;/li&gt;
&lt;li&gt;Handle security blocks in your inbox.&lt;/li&gt;
&lt;li&gt;Everything is test-safe and driven by API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.OTP, Verification Link &amp;amp; Magic Link Testing&lt;/p&gt;

&lt;p&gt;Typical use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verification of email after registration&lt;/li&gt;
&lt;li&gt;Link to reset your password&lt;/li&gt;
&lt;li&gt;OTP for login&lt;/li&gt;
&lt;li&gt;Email invitations&lt;/li&gt;
&lt;li&gt;Email body parsing an
d value extraction are made possible by MailSlurp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4.Isolated Test Data&lt;/p&gt;

&lt;p&gt;Every test may have a separate inbox. This prevents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collisions in emails&lt;/li&gt;
&lt;li&gt;Perusing incorrect emails&lt;/li&gt;
&lt;li&gt;Tests that are erratic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is ideal for parallel test execution in CI/CD workflows.&lt;/p&gt;

&lt;p&gt;5.Works with CI/CD Pipelines&lt;/p&gt;

&lt;p&gt;MailSlurp works well in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. GitHub Actions
2. GitLab CI
3. Jenkins
4. Azure DevOps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No UI login required&lt;/p&gt;

&lt;h3&gt;
  
  
  Email Testing Without the Drama: How MailSlurp Fixes the Mess
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Problem with Normal Email Testing&lt;/th&gt;
      &lt;th&gt;How MailSlurp Fixes It&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Captcha blocks automation&lt;/td&gt;
      &lt;td&gt;No CAPTCHA involved&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Manual OTP checking&lt;/td&gt;
      &lt;td&gt;Fully automated via API&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Shared test inbox issues&lt;/td&gt;
      &lt;td&gt;Each test gets its own inbox&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Email delays cause flaky tests&lt;/td&gt;
      &lt;td&gt;Built-in waiting mechanisms&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Hard to validate email content&lt;/td&gt;
      &lt;td&gt;Programmatic email parsing&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Security issues with Gmail creds&lt;/td&gt;
      &lt;td&gt;API key-based access&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Inbox polluted with test emails&lt;/td&gt;
      &lt;td&gt;Auto-delete inboxes&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Setting Up MailSlurp with Playwright
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;Before starting, make sure you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Node.js installed
2. A Playwright project set up
3. A MailSlurp account
4. MailSlurp API Key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get an API key from the &lt;a href="https://app.mailslurp.com/settings/developers" rel="noopener noreferrer"&gt;&lt;strong&gt;MailSlurp dashboard&lt;/strong&gt;&lt;/a&gt; after signing up.&lt;/p&gt;

&lt;p&gt;Step 1: Install MailSlurp SDK&lt;/p&gt;

&lt;p&gt;Run this in your project root:&lt;br&gt;
&lt;code&gt;npm install mailslurp-client dotenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Store API Key Securely&lt;br&gt;
Create a .env file in your project:&lt;br&gt;
&lt;code&gt;MAILSLURP_API_KEY=your_api_key_here&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Configure MailSlurp Client&lt;br&gt;
Create a helper file: mailslurp.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { MailSlurp } = require('mailslurp-client');
require('dotenv').config();

const mailslurp = new MailSlurp({ apiKey: process.env.MAILSLURP_API_KEY });

async function createInbox() {
  const inbox = await mailslurp.createInbox();
  return inbox; // inbox.id and inbox.emailAddress
}

async function waitForOtp(inboxId) {
  const email = await mailslurp.waitForLatestEmail(inboxId, 60000);
  const body = email.body || email.bodyExcerpt || '';
  const otpMatch = body.match(/\b\d{6}\b/);

  if (!otpMatch) {
    throw new Error('OTP not found in email body');
  }

  return otpMatch[0];
}

async function deleteInbox(inboxId) {
  await mailslurp.deleteInbox(inboxId);
  console.log(`Inbox ${inboxId} deleted.`);
}

module.exports = { createInbox, waitForOtp, deleteInbox };

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 4: Create Inbox &amp;amp; Use It in Playwright Test&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { test, expect } = require('@playwright/test');
const { mailslurp } = require('../utils/mailslurp');

test('User signup with email verification', async ({ page }) =&amp;gt; {
  // 1. Create a new inbox
  const inbox = await mailslurp.createInbox();
  const emailAddress = inbox.emailAddress;

  // 2. Use the email in your app signup form
  await page.goto('https://your-app-url.com/signup');
  await page.fill('#email', emailAddress);
  await page.fill('#password', 'Test@1234');
  await page.click('#signupBtn');

  // 3. Wait for verification email
  const email = await mailslurp.waitForLatestEmail(inbox.id, 30000);

  // 4. Extract verification link or OTP
  const body = email.body;
  const otpMatch = body.match(/\b\d{6}\b/); // example for 6-digit OTP
  const otp = otpMatch[0];

  // 5. Continue verification flow
  await page.fill('#otp', otp);
  await page.click('#verifyBtn');

  await expect(page).toHaveURL(/dashboard/);
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 5: Extract Links from Email&lt;br&gt;
If your email contains a verification link:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const linkMatch = email.body.match(/https?:\/\/[^\s]+/);
const verifyLink = linkMatch[0];

await page.goto(verifyLink);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.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%2Fzf0vtvn75p2bll0kp8uc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fzf0vtvn75p2bll0kp8uc.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Keep Tests Happy
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new inbox per test&lt;/li&gt;
&lt;li&gt;Delete inboxes after tests&lt;/li&gt;
&lt;li&gt;Use regex to extract OTPs safely&lt;/li&gt;
&lt;li&gt;Add retry logic for flaky email delivery&lt;/li&gt;
&lt;li&gt;Keep MailSlurp logic in helper files&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>testing</category>
      <category>mailslurp</category>
      <category>automation</category>
      <category>captcha</category>
    </item>
    <item>
      <title>Smart To-Do App with KendoReact</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Fri, 14 Mar 2025 11:19:06 +0000</pubDate>
      <link>https://forem.com/kanimesha99/smart-to-do-app-with-kendoreact-3d43</link>
      <guid>https://forem.com/kanimesha99/smart-to-do-app-with-kendoreact-3d43</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What I Built&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;📝 Smart To-Do List&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Using KendoReact's robust free components, I created a &lt;strong&gt;modern and efficient To-Do App&lt;/strong&gt; for this challenge that has an effortless user interface and enables users to &lt;strong&gt;add, categorize, and mark tasks as complete&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;✨ Features:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add, edit, and manage tasks easily.
&lt;/li&gt;
&lt;li&gt;Categorize tasks into "Work," "Personal," and "Shopping."
&lt;/li&gt;
&lt;li&gt;Set due dates with a KendoReact DatePicker.
&lt;/li&gt;
&lt;li&gt;Mark tasks as completed with a KendoReact Checkbox.
&lt;/li&gt;
&lt;li&gt;Real-time success notifications on task addition.
&lt;/li&gt;
&lt;li&gt;Responsive and beautifully designed UI.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Demo&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  📂 &lt;strong&gt;GitHub Repository:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/kanimesha99/my-todo-app.git" rel="noopener noreferrer"&gt;https://github.com/kanimesha99/my-todo-app.git&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Screenshots:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Main UI:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F688dm9vu1agqt8ayhouu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F688dm9vu1agqt8ayhouu.png" alt=" " width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add New Task:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fc6rv5k21xgprrsf1ipna.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fc6rv5k21xgprrsf1ipna.png" alt=" " width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Task Dialog:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ftln5o2ddy0rnhr8kq7rd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ftln5o2ddy0rnhr8kq7rd.png" alt=" " width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task Marked as Completed:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ft60fquxjjbolfyl2wxuc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ft60fquxjjbolfyl2wxuc.png" alt=" " width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;KendoReact Experience&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This project leverages &lt;strong&gt;10+ KendoReact Free Components&lt;/strong&gt;, which made the development process faster and more efficient. Here’s how I used them:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔹 KendoReact Components Used:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid &amp;amp; GridColumn&lt;/strong&gt; – To display tasks in a structured table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Button&lt;/strong&gt; – For adding tasks and completing actions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dialog&lt;/strong&gt; – For the “Add Task” popup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Input&lt;/strong&gt; – To enter task names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DropDownList&lt;/strong&gt; – To select a task category.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DatePicker&lt;/strong&gt; – To set due dates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checkbox&lt;/strong&gt; – To mark tasks as complete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notification&lt;/strong&gt; – To show success messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;KendoReact’s seamless integration and flexibility helped me create an intuitive and polished experience for users.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;AIm to Impress&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Currently, this version does not integrate GenAI, but I plan to enhance it with &lt;strong&gt;AI-powered task recommendations&lt;/strong&gt; and &lt;strong&gt;smart prioritization&lt;/strong&gt; in future updates. Features could include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-based task suggestions&lt;/strong&gt; based on user behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automated priority setting&lt;/strong&gt; using machine learning.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Delightfully Designed&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To ensure a visually appealing UI, I utilized &lt;strong&gt;Kendo UI Figma Kits&lt;/strong&gt; and &lt;strong&gt;Progress ThemeBuilder&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used &lt;strong&gt;ThemeBuilder&lt;/strong&gt; to adjust the color scheme, button styling, and grid appearance.&lt;/li&gt;
&lt;li&gt;Followed &lt;strong&gt;Kendo UI Figma Kits&lt;/strong&gt; for layout structure and consistency.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Final Thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;KendoReact made it incredibly easy to build this &lt;strong&gt;feature-rich To-Do App&lt;/strong&gt; with minimal effort. The free components provided a solid foundation for functionality and design, allowing me to focus more on enhancing the user experience.&lt;/p&gt;

&lt;p&gt;🔹 &lt;strong&gt;Future Plans:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;strong&gt;drag-and-drop task reordering.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Implement &lt;strong&gt;local storage support&lt;/strong&gt; for persistence.&lt;/li&gt;
&lt;li&gt;Introduce &lt;strong&gt;dark mode toggle.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>kendoreactchallenge</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Handle Alerts without using switchTo().alert()</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Mon, 13 Jan 2025 15:28:43 +0000</pubDate>
      <link>https://forem.com/kanimesha99/handle-alerts-without-using-switchtoalert-40lb</link>
      <guid>https://forem.com/kanimesha99/handle-alerts-without-using-switchtoalert-40lb</guid>
      <description>&lt;p&gt;Imagine that when filling an application, you accidentally missed certain information. Without an alert or pop-up window, how would you know this? This article provides into great depth on what a selenium alert is and how to deal with it. Let's take a look more closely at the following subjects to gain a practical understanding of handling alerts and popups in Selenium.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction to Alerts in Selenium&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Selenium, an alert is a message or notice box that informs the user of particular information or requests authorization to continue  a certain action. It can also be utilized as a warning.&lt;/p&gt;

&lt;p&gt;There are three types of Alert in Selenium, described as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Simple Alert&lt;/strong&gt;&lt;br&gt;
This alert is used to notify a simple warning message with an ‘OK’ button as the image i attached below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Furr8yxo41zw3rp0cjhhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Furr8yxo41zw3rp0cjhhw.png" alt=" " width="559" height="237"&gt;&lt;/a&gt;&lt;br&gt;
(Source:&lt;a href="https://www.scientecheasy.com/" rel="noopener noreferrer"&gt;https://www.scientecheasy.com/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Prompt Alert&lt;/strong&gt;&lt;br&gt;
This alert will ask the user to input the required information to complete the task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fqmwuemstuqhe2fwrrf8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqmwuemstuqhe2fwrrf8y.png" alt=" " width="559" height="397"&gt;&lt;/a&gt;&lt;br&gt;
(Source:&lt;a href="https://www.scientecheasy.com/" rel="noopener noreferrer"&gt;https://www.scientecheasy.com/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Confirmation Alert&lt;/strong&gt;&lt;br&gt;
This alert is basically used for the confirmation of some tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fddgkojj2ut9gmr4wywwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fddgkojj2ut9gmr4wywwh.png" alt=" " width="559" height="397"&gt;&lt;/a&gt;&lt;br&gt;
(Source:&lt;a href="https://www.scientecheasy.com/" rel="noopener noreferrer"&gt;https://www.scientecheasy.com/&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Methods to handle alerts in Selenium&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Void dismiss(): This method is used when the ‘Cancel’ button is clicked in the alert box.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;driver.switchTo().alert().dismiss();&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Void accept(): This method is used to click on the ‘OK’ button of the alert.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;driver.switchTo().alert().accept();&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
String getText(): This method is used to capture the alert message.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;driver.switchTo().alert().getText();&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Void sendKeys(String stringToSend): This method is used to send data to the alert box.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;driver.switchTo().alert().sendKeys("Text");&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The below code snippet demonstrates various ways of handling alerts using Selenium WebDriver in Java. To do the code explanation i used this &lt;a href="https://testautomationpractice.blogspot.com/" rel="noopener noreferrer"&gt;Demo site&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the first method i have used switch.To method. In here i accept the alert message.&lt;br&gt;
In the second method i create object from wait class and wait for the alert to appear and then accepts it.&lt;br&gt;
In the third method  using JavascriptExecutor override the "window.alert" function to suppress alerts by setting it to an empty function. &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Test
public void alert(){
    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://testautomationpractice.blogspot.com/");
    WebElement alertBtn = driver.findElement(By.xpath("//button[@id='alertBtn']"));
    alertBtn.click();

    //Using switchTo
    Alert alert = driver.switchTo().alert();
    alert.accept();

    //Using Explicit wait
    WebDriverWait mywait = new WebDriverWait(driver, Duration.ofSeconds(10));
    Alert alert1 = mywait.until(ExpectedConditions.alertIsPresent());
    alert1.accept();

    //Using JavascriptExecutor
    JavascriptExecutor js = (JavascriptExecutor) driver;
    try{
        js.executeScript("window.alert=function{};");
    }catch(Exception e){

    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Handling Dynamic Tables with Changing Rows and Columns</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Mon, 06 Jan 2025 13:02:05 +0000</pubDate>
      <link>https://forem.com/kanimesha99/handling-dynamic-tables-with-changing-rows-and-columns-3p64</link>
      <guid>https://forem.com/kanimesha99/handling-dynamic-tables-with-changing-rows-and-columns-3p64</guid>
      <description>&lt;p&gt;Finding the rows and columns based on their dynamic changes and determining the table structure are necessary when working with dynamic tables in Selenium. To explain the scenario I use a &lt;a href="https://practice.expandtesting.com/dynamic-table" rel="noopener noreferrer"&gt;Demo site&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Test
public void dynamicTableHandling(){
    WebDriver driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.get("https://practice.expandtesting.com/dynamic-table");
    List&amp;lt;WebElement&amp;gt; Raws =  driver.findElements(By.xpath("//table[@class='table table-striped']/tbody/tr"));
    System.out.println("The no. of raws : "+Raws.size());

    for(int r=1;r&amp;lt;=Raws.size();r++){
        WebElement name = driver.findElement(By.xpath("//table[@class='table table-striped']/tbody/tr["+r+"]/td[1]"));
        if(name.getText().equals("Chrome"))
        {
            String CPULoad = driver.findElement(By.xpath("//td[text()='Chrome']//following-sibling::*[contains(text(),\"%\")]")).getText();
            System.out.println(CPULoad);
            String Value = driver.findElement(By.id("chrome-cpu")).getText();
            System.out.println(Value);
            if(Value.contains(CPULoad)){
                System.out.println("The CPU Load is equal");
            }
            else{
                System.out.println("The CPU Load is not equal");
            }
            break;
        }

    }
    driver.quit();

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here's how to use Java's Selenium WebDriver to manage a dynamic table with shifting rows and columns:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As the first step I did setup the driver and navigate to the &lt;a href="https://practice.expandtesting.com/dynamic-table" rel="noopener noreferrer"&gt;Demo site&lt;/a&gt;.In that case I have Initialized a WebDriver instance (ChromeDriver) and Maximized the browser window and navigates to the given URL.&lt;/p&gt;

&lt;p&gt;After that locates all rows in the table using the XPath. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;//table[@class='table table-striped']/tbody/tr.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then prints the total number of rows.&lt;/p&gt;

&lt;p&gt;Next Iterated Through Rows using for Loop , through each row using an index (r)and extracted the name in the first column using XPath.&lt;/p&gt;

&lt;p&gt;And I checked whether If the name in the first column matches "Chrome", then finds the CPU Load percentage dynamically using &lt;/p&gt;

&lt;p&gt;&lt;code&gt;//td[text()='Chrome']//following-sibling::*[contains(text(),\"%\")].&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After that retrieved the CPU Load value from a specific element with ID chrome-cpu and compared the two values and prints a message about their equality. Finally Quits the browser after the test.&lt;/p&gt;

</description>
      <category>selenium</category>
      <category>dynamicelements</category>
      <category>testing</category>
    </item>
    <item>
      <title>Learn Through Past!!!</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Thu, 02 Jan 2025 13:27:08 +0000</pubDate>
      <link>https://forem.com/kanimesha99/learn-through-past-53l</link>
      <guid>https://forem.com/kanimesha99/learn-through-past-53l</guid>
      <description>&lt;p&gt;I'm thinking back on a year 2024 and I observed that it was filled with transformation, learning, and growth. As I started a journey to redefine my career choices and seize new chances, this year has been filled with milestones, challenges, and self-discovery.&lt;/p&gt;

&lt;p&gt;I wrapped up my bachelor's degree in software engineering at the beginning of the year. Though software development was the focus of my initial work experience, I found that different area caught my interest more. This realization led to a daring choice to change my career path and look into a career as a software quality assurance engineer.&lt;br&gt;
Taking the decision to move to a QA internship was both thrilling and challenging. I had to start again when I entered a new field, but I also had the chance to see the software development lifecycle from a different angle. I was eager to understand all aspects of  quality controls, and testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fb9g3mrbrj2rjopexxbau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fb9g3mrbrj2rjopexxbau.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Lessons from 2024&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Adaptability is The key&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I learned the value of maintaining adaptability via changing professions. With that I focused about increasing my skills on analytical thinking, and  problem-solving, QA needed a distinct skill set than development. I rapidly learned how to change my point of view and welcome the difficulties of my fresh start.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Continuous Learning&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I studied testing techniques, automation tools, and programming languages like Python and Java this year. Selenium WebDriver and other tools were essential to my everyday work, and I learned how important it is to maintain interest and keep learning new things.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Challenges and Progress&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There were difficulties when shifting to a new career. At first, it was difficult to handle strict deadlines, comprehend test case design, and navigate testing frameworks. Even though I had moments of self-doubt, I continued because of my mentors' encouragement. Each challenge I conquered increased my confidence and passion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Better things yet to come&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've just recently started my QA journey, but I'm thrilled about what comes ahead. I want to acquire advance testing techniques, expand my automation knowledge, and help create software that is of good quality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fco9os918rmzezwbqvdbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fco9os918rmzezwbqvdbf.png" alt=" " width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>newyearchallenge</category>
      <category>career</category>
      <category>qa</category>
    </item>
    <item>
      <title>An Exploration into Use Case Diagrams</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Fri, 26 Jan 2024 06:49:50 +0000</pubDate>
      <link>https://forem.com/kanimesha99/an-exploration-into-use-case-diagrams-5b1k</link>
      <guid>https://forem.com/kanimesha99/an-exploration-into-use-case-diagrams-5b1k</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;U&lt;/strong&gt;se case diagram is one of the primary tools used in the Unified Modeling Language (UML) for capturing requirements and functionalities by using actors, use cases, and relationships. Use case diagrams assists to model the tasks, functions, services that a system needs to perform, by that stakeholders of the system can acquire a better understanding about scope and behavior of the system. Mainly it represents high-level functionalities of the system. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F770at1yhl7g8ty30g3r9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F770at1yhl7g8ty30g3r9.png" alt=" " width="800" height="707"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Components of a Use Case Diagram&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Actors:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Actors are the roles that interact with the particular system. The users can be divided into two parts as primary actors and secondary actors. Actors are drawn using stick figures or simple shapes outside the system boundary. Each actor corresponds to a set of behaviors that they perform within the system boundary.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fh8jd7i23s1brsdfrg4id.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fh8jd7i23s1brsdfrg4id.png" alt=" " width="512" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Cases:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use cases are used to represent a particular functionality provided by the system. They describe the behavior of the system from the perspective according to the actors of the system.&lt;br&gt;
Use cases are represented by using ellipses within the system boundary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationships:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Actors and use cases are connected by relationships. It illustrates how they interact with each component of the system. There are primary relationships and other type of relationships.&lt;br&gt;
The primary relationship is the association between an actor and a use case. It indicates that the actor participates in that use case. Other relationships include  include, extend, generalization, and dependency relationships.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Flj12lt2qe4b9lk6jc6y8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flj12lt2qe4b9lk6jc6y8.png" alt=" " width="632" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System Boundary:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The system boundary defines the scope of the system being modeled.&lt;br&gt;
It helps to identify the system's scope from its external actors and environments. Use cases are consists within this system boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Characteristics and Guidelines:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Simplicity:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use case diagrams should not be more complex. There should be not be included too much details or technical implementation specifics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clarity:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use clear labels and tags for actors and use cases to ensure understanding of the stakeholders. Use of meaningful names that accurately reflect the system's functionalities helps to increase the clarity of the diagram also.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensure consistency with other UML diagrams and project documentation by using standard notations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Completeness:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The diagram should cover all significant interactions between actors and the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After preparing the diagram it is better to validate the diagram with stakeholders to ensure that it accurately captures their requirements and expectations. Otherwise need to do modification according to their requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8x39qwho6om5fyp51sid.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8x39qwho6om5fyp51sid.png" alt=" " width="225" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>uml</category>
      <category>usecase</category>
      <category>diagram</category>
    </item>
    <item>
      <title>Why Kotlin?</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Fri, 12 May 2023 13:51:52 +0000</pubDate>
      <link>https://forem.com/kanimesha99/why-kotlin-4p5h</link>
      <guid>https://forem.com/kanimesha99/why-kotlin-4p5h</guid>
      <description>&lt;p&gt;Kotlin is a trendy programming language that aims to be expressive, and error-free. JetBrains software company which is the organization behind the famous IntelliJ concept integrated development environment (IDE) has invented this, and it's now an approved programming language for producing Android apps. Kotlin is a statically-typed language, cause of that its variables and features need to be specified with a specific type at compile time, making it fewer prone to errors and less complex to maintain. &lt;/p&gt;

&lt;p&gt;One of the most significant advantages of Kotlin is, its compatibility with Java. Kotlin code may be turned into Java bytecode which it to execute on any platform that supports Java, including Android. Thereby it easier to integrate Kotlin into existing Java applications and to use Java libraries in Kotlin programs. Another benefit of Kotlin is ,that it has a short syntax. &lt;/p&gt;

&lt;p&gt;Kotlin also contains several features that help to make it simpler to write solid and maintainable code. NullPointerExceptions are not uncommon in Java when a variable is null, leading the utility to fail. Null safety is built into Kotlin, which implies that the compiler determines if a variable may be null or not at assembly time. This makes it easier to write code that is more robust and less prone to errors. Kotlin also supports practical programming, which implies that it respects functions as good residents. This implies you may use capabilities as inputs in other methods, return features from features, and shop features in variables. This makes it less difficult to write code that is more modular and easier to test.&lt;/p&gt;

&lt;p&gt;Kotlin is a popular programming language that is make programming easier, more succinct. Its Java compatibility, null protection, and support for practical programming make it an excellent candidate for writing Android applications as well as standard-motive programming.&lt;/p&gt;

</description>
      <category>kotlin</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Life with Coding!!!</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Fri, 17 Mar 2023 10:05:19 +0000</pubDate>
      <link>https://forem.com/kanimesha99/life-with-coding-3kj6</link>
      <guid>https://forem.com/kanimesha99/life-with-coding-3kj6</guid>
      <description>&lt;p&gt;At my Advance Level Learnings always I needed to be a Accountant or Manager. But my results on Advanced Level Exams makes me enter to do IT related degree. Currently I am an third year Undergraduate of State University.&lt;/p&gt;

&lt;p&gt;At the initial level I did not have that much idea about what is going on here ,because I am very new to this field. In my first year I did not know about any technology or IT Related companies. Therefore I joined with some industry oriented projects and got to know about IT Industry and Positions.&lt;/p&gt;

&lt;p&gt;In the last year I have participated for many hackathons with assist of my university mates. After participating for that I was enthusiastic for participate for many more hackathons and earn new swags also. Therefore I looked for hackathons time to time and participated for hackathons and designathon also with my team members. It was a great pleasure to have group of friends who are interested in IT Facts. And we were able to compete up to semi final round and final round.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fevvj1j3xqh8j57tt6yiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fevvj1j3xqh8j57tt6yiz.png" alt=" " width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the last year I was able to start my internship in a company which in IT industry. It was very new experience for me, cause i have never worked in industry before. They make me more aware about technical aspects and I try my best to develop my knowledge using that chance and assets.&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
    <item>
      <title>Step into JIRA</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Fri, 05 Aug 2022 18:14:28 +0000</pubDate>
      <link>https://forem.com/kanimesha99/step-into-jira-fl2</link>
      <guid>https://forem.com/kanimesha99/step-into-jira-fl2</guid>
      <description>&lt;p&gt;&lt;strong&gt;J&lt;/strong&gt;IRA is an application which developed by Atlassian to support Project Management, Track Issues and bugs. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fatawbgqcgrlg1apmec3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fatawbgqcgrlg1apmec3s.png" alt=" " width="749" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At present we can see that many companies tend to use JIRA as their Project Management tool. The reasons for that is;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;JIRA facilitates everything that need to manage projects and teams properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It Provides Countless add-ons to further enhance the functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users can customize the application according to their preferences like;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;customize workflow &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Custom issue Type              &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Fields&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Design Issue Operations screen &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a person needs to work with JIRA , have to create a account in Atlassian via login into below link.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://id.atlassian.com/signup" rel="noopener noreferrer"&gt;https://id.atlassian.com/signup&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Frseeguhagosesji98mut.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Frseeguhagosesji98mut.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are some various kinds of products in JIRA. Such as&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jira Core&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It allows to track issues by using customizable workflow&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jira Software&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It provides extra agile functionality which can track software projects when use agile methodologies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jira Service Desk&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is a service which is use to support projects .By this users can have much better experience because this helps to ask for help and solve the matters and agents can interact with their users also. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jira Ops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a incident management Tool and it helps to produce centralized alerts and notify the right person at the high time.&lt;/p&gt;

&lt;p&gt;Furthermore, other products are like these.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Flhe9fsyanaesdowz2d1i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Flhe9fsyanaesdowz2d1i.jpeg" alt=" " width="750" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jira</category>
      <category>introduction</category>
      <category>projectmanagement</category>
    </item>
    <item>
      <title>Rise Up With Innovative Ideas</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Wed, 16 Mar 2022 14:44:12 +0000</pubDate>
      <link>https://forem.com/kanimesha99/rise-up-with-innovative-ideas-1kkb</link>
      <guid>https://forem.com/kanimesha99/rise-up-with-innovative-ideas-1kkb</guid>
      <description>&lt;p&gt;&lt;strong&gt;“I believe you have to be willing to be misunderstood if you’re going to innovate.“&lt;/strong&gt;&lt;br&gt;
                                      -Jeff Bezos-&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A&lt;/strong&gt;ctually I were not experienced Deepgram before i participate for this Hackathon. But I needed to participate for this amazing Hackathon badly. Because I have addicted to participate Hackathons and Dev Community.  Hence I tend to find about this application. It seems like Interesting and efficient application for our society.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fas5sxcirm58mnfwrivxh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fas5sxcirm58mnfwrivxh.jpg" alt=" " width="275" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Deepgram Use-Case
&lt;/h3&gt;

&lt;p&gt;According to me, Deepgram is a web application which provides facility to developers with the tools which need to easily add AI speech recognition to applications. We can handle practically any audio file format and deliver at lightning speed for the best voice experiences using Deepgram. Therefor this is super cool application for people who have disables on writing and people have lack knowledge on writing. And the best thing is at present people are busy with day-to-day works. By translating sound to words save time we waste for typings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fqioti6cgki8pay6fm4kb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqioti6cgki8pay6fm4kb.png" alt=" " width="467" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  My Deepgram Use-Case
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The problem I saw in there is In the world every person do not have laptop or desktop computer. But everyone use smart phones. Although there is a web application for deepgram they do not have mobile application or something like that.
Then my Suggestion is to build a mobile App for this. Then people will be convenient with this application and it decreases the accessibility, usage of this application. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnz9b8ovtkqwvghusqjf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnz9b8ovtkqwvghusqjf6.png" alt=" " width="232" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;And the next problem is there is no that much user friendly interface for interact with their users.
In the Deepgram I saw that they are communicating with users by using email and Facebook Community. But it will much easier and efficient if they have chatbot or something in their application also. It is convenient to resolve the problems of users and gather new suggestions also. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ft82a9mv71cjf9n7lew87.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ft82a9mv71cjf9n7lew87.png" alt=" " width="310" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Last suggestion from my side is Add some Pre-Converted files.
there are many famous and well known books and documentations in the world. if you can add some Audio files as convention of those books it will be help to users and may causes to expand the user base also. This can be group according to the particular fields like literature, IT, Finance etc.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;This is very useful application with nice service. Keep it up with new innovative things.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fxd8me47zsoqd122zrugv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fxd8me47zsoqd122zrugv.jpg" alt=" " width="259" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hackwithdg</category>
    </item>
    <item>
      <title>Nevertheless, Nimesha Coded in 2022</title>
      <dc:creator>Nimesha Kumarapperuma </dc:creator>
      <pubDate>Wed, 09 Mar 2022 03:33:01 +0000</pubDate>
      <link>https://forem.com/kanimesha99/nevertheless-nimesha-coded-in-2022-mah</link>
      <guid>https://forem.com/kanimesha99/nevertheless-nimesha-coded-in-2022-mah</guid>
      <description>&lt;p&gt;At my Advance Level Learnings always I needed to be a Accountant or Manager. But my results on Advanced Level Exams makes me enter to do IT related degree. Currently I am an Undergraduate of State University in Sri Lanka. &lt;br&gt;
At the initial level I did  not have that much idea about what is going on here because I am very new to this field. In my first year I did not know about any technology or IT Related companies. Therefore I joined with some industry oriented projects and got to know about IT Industry and Positions. &lt;br&gt;
In the last year I have participated for hacktoberfest event with assist of my university mate. After participating for that I was enthusiastic for participate for many more hackathons and earn new swags also. Therefore I looked for hackathons time to time and participated for hackathons and designathons also with my team members. It was a great pleasure to have group of friends who are interested in IT Facts. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F1uuzetawapptsqn04432.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1uuzetawapptsqn04432.jpg" alt=" " width="800" height="999"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F1nt63e81v6vsnwja9r6o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1nt63e81v6vsnwja9r6o.jpg" alt=" " width="800" height="577"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fd3qtemdzf71rg5gwi4uc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fd3qtemdzf71rg5gwi4uc.jpg" alt=" " width="800" height="567"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fsxwzrgwhlk9gmixc9fkv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fsxwzrgwhlk9gmixc9fkv.jpg" alt=" " width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nevertheless I always try to gather new knowledge by following new courses in IT Related Platforms and watch videos in YouTube also. And I always try to share my gathered knowledge with my colleagues .It helps me to refresh my knowledge. I have participated for the PyCon also. It was the first ever python conference for the python  community in Sri Lanka. &lt;/p&gt;

&lt;p&gt;Now I am happy to be here and trying to up lift my knowledge as well and I am so excited to know new things further more.&lt;/p&gt;

</description>
      <category>wecoded</category>
    </item>
  </channel>
</rss>
