<?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: Kendall Vargas</title>
    <description>The latest articles on DEV Community by Kendall Vargas (@kendall_vargas).</description>
    <link>https://dev.to/kendall_vargas</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%2F2147934%2Ff414e85d-ea53-4f21-94b6-cadda2f3ad85.jpeg</url>
      <title>DEV Community: Kendall Vargas</title>
      <link>https://dev.to/kendall_vargas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kendall_vargas"/>
    <language>en</language>
    <item>
      <title>Java OOP: Week 2 - The OOP Adventure Continues</title>
      <dc:creator>Kendall Vargas</dc:creator>
      <pubDate>Tue, 07 Jan 2025 19:57:14 +0000</pubDate>
      <link>https://dev.to/kendall_vargas/java-oop-week-2-the-oop-adventure-continues-aed</link>
      <guid>https://dev.to/kendall_vargas/java-oop-week-2-the-oop-adventure-continues-aed</guid>
      <description>&lt;p&gt;&lt;strong&gt;In my first week&lt;/strong&gt; I mentioned general topics about &lt;strong&gt;OOP&lt;/strong&gt;, where I was able to learn quite a bit about these topics in a short amount of time. However, there were still topics left to cover. Taking into account that this is just the &lt;em&gt;basics of OOP&lt;/em&gt;, I am in the process of deciding if &lt;strong&gt;Java&lt;/strong&gt; will be the language I want to focus on &lt;em&gt;100%&lt;/em&gt;, even after finishing university, I have to say that I have a particular liking for the backend because of my experience in &lt;strong&gt;testing&lt;/strong&gt;, which may be a factor in my decision.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;During this second week&lt;/strong&gt; I didn’t have much time to review topics like &lt;strong&gt;threads&lt;/strong&gt;, &lt;strong&gt;enums&lt;/strong&gt;, or &lt;strong&gt;generics&lt;/strong&gt; that I had pending. However, I progressed on a small project simulating a &lt;strong&gt;restaurant&lt;/strong&gt;, where the following actions can be performed:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create products or meals&lt;/strong&gt; 🍔
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Place orders&lt;/strong&gt; based on those products and indicate how many were consumed.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display individual order&lt;/strong&gt; after adding it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display all orders&lt;/strong&gt;, with the option to add as many orders as the user wants.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I mainly created it to cover all aspects of &lt;strong&gt;OOP&lt;/strong&gt;, including &lt;em&gt;data validation&lt;/em&gt;, and to keep practicing &lt;em&gt;logic&lt;/em&gt;. I have it almost finished but am still adding details; I’ll upload it to my repository once it’s ready.  &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Additionally&lt;/strong&gt;, I covered another &lt;strong&gt;OOP&lt;/strong&gt; topic and other topics that are extremely useful.&lt;br&gt;&lt;br&gt;
Which ones? &lt;strong&gt;Relational classes, try and catch, and files.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;I will briefly mention how these topics have been &lt;em&gt;useful&lt;/em&gt; to me and how I understand their practical applications.  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Relational Classes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Relational classes are a topic that has taken me some time to &lt;em&gt;understand&lt;/em&gt; and use. However, once you get the hang of it, they can be implemented &lt;em&gt;easily&lt;/em&gt;. The way I’ve used this concept the most is the &lt;strong&gt;1-to-N relationship&lt;/strong&gt;, which is used to link multiple objects of a Class &lt;strong&gt;B&lt;/strong&gt; to a Class &lt;strong&gt;A&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;For example, if I want a &lt;strong&gt;car&lt;/strong&gt; to have multiple &lt;strong&gt;owners&lt;/strong&gt;, I need a relationship from the &lt;code&gt;Owners&lt;/code&gt; class to the &lt;code&gt;Cars&lt;/code&gt; class.  &lt;/p&gt;

&lt;p&gt;In the &lt;code&gt;Car&lt;/code&gt; class constructor, a &lt;strong&gt;list&lt;/strong&gt; (I’ve used &lt;code&gt;ArrayList&lt;/code&gt;) needs to be passed, and this list is created based on objects from the &lt;code&gt;Owner&lt;/code&gt; constructor. Thus, the &lt;strong&gt;owner&lt;/strong&gt; with their attributes (&lt;em&gt;name, age, ID&lt;/em&gt;, etc.) will be linked to a &lt;code&gt;Car&lt;/code&gt; constructor, which will be able to create objects with these properties.  &lt;/p&gt;

&lt;p&gt;Here’s a simple example that shows how a &lt;strong&gt;1-to-N relationship&lt;/strong&gt; is applied: &lt;a href="https://pastebin.com/dX6SDWwp" rel="noopener noreferrer"&gt;https://pastebin.com/dX6SDWwp&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;This is useful when you need to “connect” certain objects with others, so that you have a &lt;strong&gt;direct relationship&lt;/strong&gt; and they are not just connected by arrays or another different method.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Try and Catch&lt;/strong&gt; ⚙️
&lt;/h3&gt;

&lt;p&gt;The use of &lt;strong&gt;try&lt;/strong&gt; and &lt;strong&gt;catch&lt;/strong&gt; in &lt;strong&gt;Java&lt;/strong&gt; is something I’ve implemented more than in the other language I’ve used. I think this is because my &lt;strong&gt;IDE&lt;/strong&gt; automatically suggests using &lt;code&gt;try&lt;/code&gt; and &lt;code&gt;catch&lt;/code&gt; for some exceptions that require it.  &lt;/p&gt;

&lt;p&gt;This topic is just a &lt;em&gt;highlight&lt;/em&gt; compared to another language like &lt;strong&gt;C++&lt;/strong&gt;, where I used it very little and preferred other techniques to &lt;em&gt;avoid errors&lt;/em&gt;. However, I am gradually getting used to using &lt;code&gt;try&lt;/code&gt; and &lt;code&gt;catch&lt;/code&gt; to &lt;em&gt;predict errors&lt;/em&gt; and avoid &lt;em&gt;sudden system crashes&lt;/em&gt;.  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Files - JSON/GSON - Serialization and Deserialization&lt;/strong&gt; 📄
&lt;/h3&gt;

&lt;p&gt;Working with &lt;strong&gt;files&lt;/strong&gt; in &lt;strong&gt;Java&lt;/strong&gt; took up &lt;strong&gt;70%&lt;/strong&gt; of my learning time last weekend. Despite this, I feel there is a bit more information and examples compared to &lt;strong&gt;C++&lt;/strong&gt;, where I also implemented file usage with &lt;strong&gt;matrices&lt;/strong&gt; to maintain data without rewriting it.  &lt;/p&gt;

&lt;p&gt;This was useful for systems like:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Shopping carts&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Inventory management&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Orders&lt;/em&gt;, or any system where &lt;strong&gt;data retention&lt;/strong&gt; is necessary.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this case, with &lt;strong&gt;Java&lt;/strong&gt;, I need to use &lt;strong&gt;objects&lt;/strong&gt;, so this involves &lt;em&gt;serialization and deserialization&lt;/em&gt;.  &lt;/p&gt;

&lt;p&gt;Here I noticed a big difference, as the way of writing depends heavily on the &lt;em&gt;type of data&lt;/em&gt; you want. My main issue, which took &lt;em&gt;hours of research&lt;/em&gt;, was that when I saved characters to my &lt;code&gt;.txt&lt;/code&gt; file, they appeared in &lt;strong&gt;binary format&lt;/strong&gt; when opening the file, but they displayed as &lt;strong&gt;characters&lt;/strong&gt; in the console.  &lt;/p&gt;

&lt;p&gt;I found online that there are &lt;strong&gt;two ways&lt;/strong&gt; to read and write data:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Via &lt;strong&gt;bytes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Via &lt;strong&gt;characters&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The method I was using was byte-based since I was passing &lt;strong&gt;objects&lt;/strong&gt; directly.  &lt;/p&gt;

&lt;p&gt;I don’t yet feel knowledgeable enough to share the &lt;em&gt;differences&lt;/em&gt; between the various ways to use the &lt;strong&gt;&lt;code&gt;Writer&lt;/code&gt; and &lt;code&gt;Reader&lt;/code&gt; subclasses&lt;/strong&gt;, but I’m working on a real-world exercise where I’ll use &lt;strong&gt;objects&lt;/strong&gt; stored in an &lt;code&gt;ArrayList&lt;/code&gt; and learn how to &lt;em&gt;serialize and deserialize&lt;/em&gt; them using &lt;strong&gt;GSON&lt;/strong&gt; (to keep the objects in their state within the system in a &lt;code&gt;.json&lt;/code&gt; file) and then write this data to a &lt;code&gt;.txt&lt;/code&gt; file to store them as records in an &lt;strong&gt;organized way&lt;/strong&gt;.  &lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Closing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Last week, I didn’t make as much progress as I would’ve liked, but working with &lt;strong&gt;files&lt;/strong&gt; took many hours of &lt;em&gt;research&lt;/em&gt;, &lt;em&gt;application&lt;/em&gt;, and &lt;em&gt;concept differentiation&lt;/em&gt;, pulling bits from every article I reviewed to reach a final result that I’ll test in a “real” project and share how it went.  &lt;/p&gt;

&lt;p&gt;It’s important to mention that this specific handling and the scenario I mentioned with &lt;strong&gt;GSON&lt;/strong&gt; and &lt;code&gt;.txt&lt;/code&gt; is something I’m required to do for university. However, there are &lt;strong&gt;other ways&lt;/strong&gt;, like &lt;strong&gt;JPA&lt;/strong&gt; or &lt;strong&gt;databases&lt;/strong&gt;, to handle this. It’s not strictly necessary to use &lt;strong&gt;GSON&lt;/strong&gt; and &lt;code&gt;.txt&lt;/code&gt; to maintain data in a system.  &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;With nothing more to add&lt;/strong&gt;, if anyone has any input on &lt;strong&gt;files&lt;/strong&gt; or the topics I mentioned, feel free to comment and share your suggestions!  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy coding!&lt;/strong&gt; 🎉  &lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>learning</category>
    </item>
    <item>
      <title>Progress with Java - OOP</title>
      <dc:creator>Kendall Vargas</dc:creator>
      <pubDate>Tue, 31 Dec 2024 15:33:09 +0000</pubDate>
      <link>https://dev.to/kendall_vargas/progress-with-java-oop-5hia</link>
      <guid>https://dev.to/kendall_vargas/progress-with-java-oop-5hia</guid>
      <description>&lt;p&gt;After learning the basics of programming with &lt;strong&gt;C++&lt;/strong&gt; at my university, seeing mostly &lt;strong&gt;data structures, algorithms, file management, validations, functions, methods&lt;/strong&gt;, in general, the basics of programming.  &lt;/p&gt;

&lt;p&gt;However, due to university issues, the next subject I have to take is &lt;strong&gt;Java&lt;/strong&gt;, and due to my background as a &lt;strong&gt;Tester&lt;/strong&gt;, I decided to learn how to use &lt;strong&gt;Selenium with Java&lt;/strong&gt;, since it is one of the most used frameworks currently (&lt;em&gt;last update in February 2024&lt;/em&gt;) and its use with Java especially, is perfect for both cases, I would kill 2 birds with one stone as we would say in my country! 🐦🐦  &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%2F6kmhpcnj8cis5t7cgy35.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%2F6kmhpcnj8cis5t7cgy35.png" alt="Image description" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I'm getting deep into &lt;strong&gt;OOP concepts&lt;/strong&gt;, which are also essential in test automation.  &lt;/p&gt;

&lt;p&gt;Since I came from &lt;strong&gt;C++&lt;/strong&gt; and the basics, the first thing I did was learn &lt;strong&gt;Java syntax&lt;/strong&gt;, how it works, logical operators, relational operators, &lt;code&gt;try&lt;/code&gt; and &lt;code&gt;catch&lt;/code&gt;, functions, methods, statements. The good thing about learning the basics well is that when you switch from one language to another, it doesn't become so difficult, since you only have to learn the syntax and some actions that are different from other languages.  &lt;/p&gt;

&lt;p&gt;This took me maybe the first day and the second day practicing with &lt;strong&gt;basic exercises&lt;/strong&gt; that I've done in &lt;strong&gt;C++&lt;/strong&gt; and trying to solve them in &lt;strong&gt;Java&lt;/strong&gt;, to familiarize myself with the syntax and some details that work differently, such as &lt;strong&gt;statements, access modifiers or reading data in the console&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Then I moved on to &lt;strong&gt;object-oriented programming&lt;/strong&gt;, which has been a few days full of material, however, I feel that I have made a lot of progress with the concepts, a key is not to rush to learn, and to practice a lot when learning different concepts.  &lt;/p&gt;

&lt;p&gt;I would like to talk about how artificial intelligences serve to be your own teacher, &lt;strong&gt;how?&lt;/strong&gt;: ask questions, make comparisons with concepts, ask exercises to see if you understood the logic of the concept or not, and much more, which I want to talk about in a separate blog, since there is a lot to talk about.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Java&lt;/strong&gt;, being object-oriented, is ideal to start with these concepts:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Encapsulation&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Inheritance&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Polymorphism&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Method overloading and overwriting&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Abstract classes&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Interfaces&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These terms are quite complex, and it took me a lot of practice to be able to differentiate one from the other, I hope I'm not the only one! 😅&lt;br&gt;&lt;br&gt;
I still have a lot to improve, but I've tried to implement it in many exercises, and it's been quite useful to see how you can modulate the code with these techniques and save lines of code that in &lt;strong&gt;C++&lt;/strong&gt; I made it through functions or methods, which in the end, clearly is not the same.  &lt;/p&gt;

&lt;p&gt;Also, a big part of understanding &lt;strong&gt;OOP&lt;/strong&gt; is &lt;em&gt;contextualizing&lt;/em&gt; everything as an object. Thinking about something and being able to ask yourself:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What attributes does that object have?
&lt;/li&gt;
&lt;li&gt;What does this object do?
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From here come the attributes and methods of a class. For example, the example that is always used:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;A car&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;What attributes does a car have?&lt;/em&gt; Tires, doors, brand, model, color, and so many more attributes
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;What actions can a car do?&lt;/em&gt; Accelerate, brake, park, reverse, turn and much more
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;attributes and methods&lt;/strong&gt; are derived from these, as well as any other object that is needed.  &lt;/p&gt;

&lt;p&gt;After learning these terms, I then moved to &lt;strong&gt;collections&lt;/strong&gt;, which are structures that can grow without having to be defined like vectors and matrices, these collections grow as data is added.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of collections that I have seen these days&lt;/strong&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;ArrayList&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;LinkedList&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Stack&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;HashMap&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each one has different functions and can be very useful, the one I have used the most so far has been the &lt;strong&gt;ArrayList&lt;/strong&gt;, I love it for creating objects and adding them with the &lt;code&gt;.add()&lt;/code&gt; method.  &lt;/p&gt;

&lt;p&gt;Something that I loved and learned about these collections, is the iteration over them, and the &lt;strong&gt;forEach method&lt;/strong&gt;. I had seen it and I never even knew what it was, until now that I learned to use it, I have not used the conventional method again! This &lt;strong&gt;forEach method&lt;/strong&gt; has a little more simplicity in the steps to go through the &lt;strong&gt;ArrayList&lt;/strong&gt;, for example, you do not need to use &lt;code&gt;list.get(i)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Creating an arrayList:  &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`ArrayList&amp;lt;String&amp;gt; list = new ArrayList&amp;lt;&amp;gt;();

// Adding items to the list
list.add("test");
list.add("another");
list.add("third");`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Normal for method:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`for (int i = 0; i &amp;lt; list.size(); i++) {
    System.out.println(list.get(i));
}`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;forEach method:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`for (String element : list) {
    System.out.println(element);
}`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;I thought that &lt;strong&gt;OOP&lt;/strong&gt; was not going to be so complicated, since I had some knowledge, but seeing it from a programmer's side, it is quite complex and requires critical thinking to be able to use it in the best way.&lt;br&gt;
I still have quite a few things to see, such as:&lt;br&gt;
&lt;em&gt;ENUMS, threads, generics, JPA&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In total I have more than &lt;strong&gt;50 packages&lt;/strong&gt; in my repository, each one including approximately 3/4 classes, which means that in a quick estimate I have a little more than &lt;strong&gt;200 classes created from pure exercises&lt;/strong&gt; and learning with all this that I have mentioned, I plan to upload it to a repository soon with statements so that others can practice with the same!&lt;/p&gt;

&lt;p&gt;I am almost done with this beautiful &lt;strong&gt;OOP&lt;/strong&gt; topic, I will document how I did this week with the missing topics, and then fully carry out projects applying all the concepts studied, which is the most important thing.&lt;/p&gt;

&lt;p&gt;Resources:&lt;br&gt;
I have used courses &lt;strong&gt;in Spanish&lt;/strong&gt; (&lt;em&gt;TodoCode and Programacion ATS on YouTube&lt;/em&gt;), apart from a lot of &lt;strong&gt;Stack Overflow&lt;/strong&gt; and &lt;strong&gt;official Java documentation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If anyone is studying these topics and would like to exchange opinions on them, please feel free to contact me!&lt;/p&gt;

&lt;p&gt;Thanks for reading, happy coding/testing!💻&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
    </item>
    <item>
      <title>My experience with Cypress Automation Framework: Tips and Insights</title>
      <dc:creator>Kendall Vargas</dc:creator>
      <pubDate>Thu, 05 Dec 2024 14:20:31 +0000</pubDate>
      <link>https://dev.to/kendall_vargas/my-experience-with-cypress-automation-framework-tips-and-insights-5186</link>
      <guid>https://dev.to/kendall_vargas/my-experience-with-cypress-automation-framework-tips-and-insights-5186</guid>
      <description>&lt;h2&gt;
  
  
  🚀 My Journey with Cypress
&lt;/h2&gt;

&lt;p&gt;When I started in the world of automation, one of the first tools I heard about, which I knew was well-positioned in the market, was Cypress. During my transition to learning automation, having already established a solid foundation in manual testing, I decided to learn how to use Cypress.&lt;/p&gt;

&lt;p&gt;With little to no programming knowledge, in this blog, I’ll share my experience with this tool by highlighting the challenges I faced, the mistakes I made, and the tips that may help you overcome them. These insights might be useful if you’re interested in learning about automation or are just starting out.&lt;/p&gt;




&lt;h2&gt;
  
  
  💻 Programming
&lt;/h2&gt;

&lt;p&gt;Although I had some understanding of programming concepts, one mistake I made was trying to dive into automation without solid programming knowledge. Why? Many times, automation scripts can become &lt;strong&gt;redundant&lt;/strong&gt;. This is where creating modular code becomes important. &lt;strong&gt;Modular code&lt;/strong&gt; is maintainable and easy to understand. After all, you’re not the only one who will read it; developers, POs, and other testers will too.&lt;/p&gt;

&lt;p&gt;A common example is iterating over objects in a dropdown menu. For this, you can use loops, which simplify handling such elements. Similarly, you can manage errors with JSON files and 'for' loops.&lt;/p&gt;

&lt;p&gt;It’s useless to copy code from an AI or other sources without understanding &lt;strong&gt;why and when&lt;/strong&gt; to apply these structures. Trust me, it’s far better to know how to implement them. Even if you copy code, understanding its functionality is key to handling errors efficiently and avoiding spending three times longer debugging due to a mistake.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔄 Cypress
&lt;/h2&gt;

&lt;p&gt;At the beginning of my journey with Cypress, my first impression was that it was easy to understand the UI part, having a dashboard and a free cloud where you can see the test results, and so on. I liked the way Cypress has the commands file, which for repetitive actions was really useful.&lt;/p&gt;

&lt;p&gt;This can be a personal opinion, but I felt that, compared to other frameworks I have used (Selenium), the code looks much cleaner and more understandable, the assertions are more readable, and the way it handles the elements is more intuitive.&lt;/p&gt;

&lt;p&gt;Additionally, I found API testing very helpful, specifically using &lt;code&gt;cy.intercept()&lt;/code&gt;. Intercepting APIs on the website and validating their responses can make your code more robust and help you avoid some errors when testing websites.&lt;/p&gt;

&lt;p&gt;However, I struggled with certain locators, particularly the family locators (parent, child, siblings, and methods like nextUntil and parentsUntil). Sometimes they worked, but other times I had to find alternative approaches to handle elements. This largely depends on the website you’re testing and how it is structured. Sometimes, you won’t even need these locators. My conclusion is that understanding CSS and HTML is essential for effectively handling such elements.&lt;/p&gt;




&lt;h2&gt;
  
  
  📚 What resources do I recommend for learning programming and Cypress?
&lt;/h2&gt;

&lt;p&gt;It depends on the programming language you want to learn and, above all, studying object-oriented programming. However, to use Cypress, you can only code in &lt;strong&gt;JavaScript or TypeScript&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;There are hundreds of free programming courses on YouTube, Udemy, and w3schools that have excellent documentation and exercises. From my perspective, practicing while learning helped me understand the concepts. The key is being repetitive, curious, and consistent. &lt;/p&gt;

&lt;p&gt;Learning loops and functions was very complex for me at first, but with practice, I understood the logic behind them, which is essential for programming.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;Cypress&lt;/strong&gt;, I recommend starting with the official documentation. It's well-structured, easy to understand, and the best way to learn how to use the tool. After that, you can look for courses on Udemy, YouTube, or &lt;a href="https://testautomationu.applitools.com/learningpaths.html?id=cypress-path" rel="noopener noreferrer"&gt;🔗 Test Automation University 🔗&lt;/a&gt;, which offers different automation paths and teaches you the programming language needed for the respective path you choose.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Things I would have liked to know before starting with Cypress
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Initially, I thought Cypress documentation wasn't good enough to help with certain cases or as an introduction. I only watched YouTube and Udemy tutorials. However, Cypress has excellent documentation that covers topics like Continuous Integration, best practices, variables, and a lot of other things. If I had started by reading the documentation, it would have been much easier to apply these concepts in practice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don’t try to learn everything right away; programming and automation are complex and require time to understand everything and perform best practices. Each time you learn a new concept, apply it and practice it until you feel comfortable. Trust me, that will save you a lot of time.&lt;br&gt;
A good way to learn is by exploring another repository and trying to understand the ‘why’ of some techniques. That’s something that helped me gain more knowledge and apply those techniques in ‘real-life’ scenarios, both for, automation and programming.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I made this mistake when I started developing my Cypress project: even though in practice you just create random test cases for some features, this is not the way you should handle your project. I strongly believe that first having an idea is key for the techniques you are going to use, understanding the website you are going to test and many other fundamentals like the Testing Pyramid will help you create a more solid project. &lt;br&gt;
In automation, we don't need to automate everything (depending on the context), so if I were to try again from scratch, I would make a &lt;strong&gt;test plan or strategy&lt;/strong&gt; about it before starting to automate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dependency: We must not have test cases that depend on some other feature, we need to have independent test cases because if we have 15 test cases and the first one fails, imagine having all 15 test cases fail because we depend on test case 1. &lt;br&gt;
For personal projects this sometimes cannot be controlled, since you’re limited to a third-party website and you can’t have some additional control on your side to avoid dependencies on some feature, however, whenever test cases can be independent, it’s better.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Speaking of personal projects, when choosing a website to create your portfolio, select a website that doesn't constantly change or is publicly editable. Sometimes sandboxes or free pages for automation are open for anyone to modify, and this can affect your test cases. &lt;br&gt;
It happened to me that some websites had significant traffic for automation, so people changed the language of the website, which affected my locators. Also, people deleted profiles, causing my tests to fail, and many other things that were a bit stressful. Try avoiding this kind of website. &lt;br&gt;
&lt;a href="https://federico-toledo.com/sitios-de-prueba-para-practicar/" rel="noopener noreferrer"&gt;🔗 Link 🔗&lt;/a&gt; where you can find websites to practice your automation tests.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🕯 Additional Tips
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Knowing the basics of testing is essential before starting automation. You won’t be able to apply testing concepts and a critical eye to features just because you’re using automation. It’s like driving a car without taking a theoretical exam, having prior knowledge is &lt;strong&gt;essential&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don’t be afraid to ASK for help! Asking allowed me to connect with incredible people and learn a lot from them. If you’re stuck and don’t know what to do, ask a colleague, even on Reddit, Stack Overflow, or Udemy (mainly for paid courses), they always answer your questions.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;I like to compare programming and automation with this phrase I heard a while ago: &lt;strong&gt;Practice makes progress, not perfection&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;Thanks for reading, and happy testing!&lt;/p&gt;

</description>
      <category>qa</category>
      <category>cypress</category>
      <category>automation</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
