Blog Posts

Freelance Jobs for College Students that you can easily get in 2018

Some of the best jobs we’ve foreseen for a freelancing student, high paying, to get on in 2018, were summarised bellow.

Just “Get a job!”, right?

Every college student knows the plight of wanting to attend so many of the events college life offers, yet being constrained by a tight wallet. The normal advice in this case would be to get a job. Easy, right? Well, for most students, even working part-time might not be manageable, time-wise, when taking into consideration all the time that they actually have to put towards school. In these situations (and not only), freelancing as a student can be the ideal solution, as it allows you to only take on the projects you can fit into your schedule. If you’re already thinking how great this could be and wondering what jobs you could get paid to do as a freelancing student, here are a few of the best ones:

Tutoring for freelance! – Whether online or in real life, tutoring is one of the most easily available jobs for a freelancing student. We’d recommend the online version, simply because you don’t even have to ever leave your dorm for it. If you’re looking to freelance as a student, online tutoring will permit you to select the exact subject you feel you’ve mastered best, and the level you want to teach it at. This option is great for freelancing students that have limited time available, as you are paid per session, generally, not based on a fixed number of hours.

  Graphic designer for freelance! – Design students have it very easy when it comes to freelancing as a student. There’s always some company looking for a logo design or for marketing materials and so on. So, if you’re good at designing, build yourself a portfolio and start reeling in those jobs. Freelancing as a student in graphic design can be particularly advantageous to you, as it will help you build up your portfolio and make your job search later on more easy.

 Website developer for freelance! –  Just as everybody needs their logo designed, everybody also wants their company to have a presence online. This is the part where freelancing students come in, and it’s another one of those jobs that allow you to grow and gain experience as you go along. All you really need to start is some knowledge of simple website developing that will allow you to create sites suited for small, local businesses. If you’re looking to freelance as a student and possess these abilities (or are willing to learn), this might be something to look into, as it can represent a steady source of income.

–  QA Automation for freelance! – Building automation scripts require just a bit of basic JavaScript usage that you could pick it right away! The tools offered these days are amazing. Earning a buck by getting a job as an automation QA freelancing a bit, will definitely not hurt!

These are our favourite picks for jobs as a freelancing student. However, there are many more out there, so make sure to have a look around, you will certainly find something that you are good at and that you would enjoy doing in your free time.

If you enjoyed this article, please share it, and tell the WOLD about us.

Protractor Locators, webdriver and selenium – beginner introduction

What is a locator? What is a locator? 
The role of a locator in Automation Development is to return an elementFinder. I’ll try even simpler.
The role of a locator is to locate a piece of HTML element, that you can see in the browser for further use. 

 

Why do we need the (protractor) locators? 
a) We need to make sure that something specific still happens in an application. You need to make sure that the login button is still there. You need to find that button, programmatically. “locators” are a way for doing this. For finding a specific element.

 

b) Protractor Locators, are the framework’s specific locators.
For example, you will not find a “ng-repeat”, anywhere beside Angular. Since Protractor was developed for testing Angular, they have provided a way for locating their specific Angular DOM elements.

 

Webdriver/Selenium/Protractor locators? -You’re driving me crazy! 
Mentioned selectors above, are framework’s specific locators. This does not mean that you can not import them and use them somewhere else. It might be somehow useless, but you can!

 

So far, there are several types of Locators.

 

I. Locators added by Protractor(angular/google) team, How to use them

 

addLocator Add a locator to this instance of ProtractorBy. – this is for creating a custom locators. You can create custom then load them later in config. I actually wrote few of my own, it’s not very complicated.
Example:
// Add the custom locator.
by.addLocator('buttonTextSimple',

    function(buttonText, opt_parentElement, opt_rootSelector) {

  // This function will be serialized as a string and will execute in the

  // browser. The first argument is the text for the button. The second

  // argument is the parent element, if any.

  var using = opt_parentElement || document,

      buttons = using.querySelectorAll('button');

  // Return an array of buttons with the text.

  return Array.prototype.filter.call(buttons, function(button) {

    return button.textContent === buttonText;

  });

});

// Use the custom locator.

element(by.buttonTextSimple('Go!')).click();
binding Find an element by text binding.
Example:
element(by.binding('person.name'));
exactBinding Find an element by exact binding.
Example:
element(by.exactBinding('person-email'));
model Find an element by ng-model expression.
Example:
element(by.model('person.name'));
buttonText Find a button by text.
Example:
element(by.buttonText('Save'));
partialButtonText Find a button by partial text.
Example:
element(by.partialButtonText('Save'));

repeater Find elements inside an ng-repeat.

Example:

element(by.repeater('Save'));
exactRepeater Find an element by exact repeater.
Example:
element(by.exactRepeater('kids'));
cssContainingText Find elements by CSS which contain a certain string.
Example:
element(by.cssContainingText('.className', 'PartialTextToFind'));
options Find an element by ng-options expression.
Example:
element(by.css('[ng-options="item as item.label for item in items track by item.id"]'))

deepCss Find an element by css selector within the Shadow DOM.

Example:

element.all(by.deepCss('span'));

 

II. Extended from Selenium/webdriver JS:
className Locates elements that have a specific class name.
Example:
element.all(by.className('span'));
css Locates elements using a CSS selector.
element.all(by.css('.className'));
id Locates an element by its ID.
Example:
element.all(by.id('#idName'));
linkText Locates link elements whose visible text matches the given string.
Example:
element.all(by.linkText('linkTextThatShouldBeFound'));
js Locates an elements by evaluating a JavaScript expression, which may be either a function or a string.
Example:
var wideElement = element(by.js(function() {

  var spans = document.querySelectorAll('span');

  for (var i = 0; i < spans.length; ++i) {

    if (spans[i].offsetWidth > 100) {

     return spans[i];

    }

  }

}));

expect(wideElement.getText()).toEqual('Three');
name Locates elements whose name attribute has the given value.
Example:
browser.findElement(by.name('dog_name'));
partialLinkText Locates link elements whose visible text contains the given substring.
Example:
browser.findElement(by.partialLinkText('Doge'));
tagName Locates elements with a given tag name.
Example:
element(by.tagName('a'));

 

xpath Locates elements matching a XPath selector.
Example:
element(by.xpath('a'));

 

In order to use the locators, you should at least have some basic HTML knowledge, you should know how to read the HTML code, you should know how to inspect the code in browser, and you should have some basic understanding of browser’s “dev tools”. This means, inspect, console, firebug, network, etc. Extremely useful stuff.

 

How to see HTML of a webpage, and get started on using and writing automated code using the locators? You need the developer tools!
All you have to do is to right click, anywhere your browser and click on “inspect”. That’s it. You have the developers tools, now open. You should see the  developer’s tools, Elements’console. More about this a tiny bit later.
qa testing - developer tools - chrome
qa testing – developer tools – chrome
Now you wonder. Why did I wrote this article? I want to help the community and give back. I’ve been helped countless times, now it’s my turn to give back.

macOS High Sierra 10.13 failed installation and fixes. mbp 2015

I upgraded from 10.12 Sierra to 10.13 High Sierra, the installation failed, and I fixed it on my 13″ MPB Early 2015. This is what I’ve been trough!

The first thing that bugs me, is the fan and high temps. The fan does not go bellow 68 degrees. This is almost 10 degrees more than Sierra, in IDLE.

I can not see any actual differences in the software so far.

The installation of High Sierra took about 1.5 hours.

First time, when I tried to actual upgrade to High Sierra it totally crashed my macbook.

The installation failed, with the error “High Sierra can’t be installed on your computer”. Which was fine. I rebooted, promoted me to enter my password, so far so good. The password was not working anymore! Hmmm, okay. I have a backup.

Bellow, there was an option to reset the password with my Apple ID. I’ve clicked that, started loading… and kept loading for about one hour. I tried to force stop the mac (long press on the power button). The macbook’s screen turned off. Okay. I tried to press it again. No sound, no movement, no image. Hm. The thing is not even powering on anymore.. I did not had the charger with me.

1 hour later, one trip to the work and back, got the charger.

The charger was working, but the thing will still not turn on! Started to get a little frustrated. Also, I’ve noticed that the macbook was however how. Therefore, my guess that it was never powered off. I waited another hour no change, the macbook was still on. I tried Command R, to reset it. No sign of turning on or off. At that moment I started to panic.

Luckily I found the bellow picture.

This brought my macbook back to life, because of upgrading to High Sierra.
SMC Reset, High Sierra Upgrade failed,
SMC Reset, High Sierra Upgrade failed, and fixes

 

HOWEVER

After the Macbook booted, I pressed Command R, wiped the whole drive, reinstalled Sierra from scratch, everything started to work normally again. I’ll get back with updates shortly.

Currently I’m going to live dangerous and keep trying High Sierra.

 

Skype is DOWN. Microsoft is did not offered details yet

Microsoft acknowledged that the Skype is down, and they are currently investigating this.

Skype is not working for millions of users from the entire world. Currently it’s not possible to login to your Skype account. If you are already logged in, it will be set to “offline” automatically. If you’re trying to use Skype from web, you will see a “sending”, and not completed emoticon.

Skype was reported that stoped working around 1:00 UK time. This starts to be more and more frustrating for Microsoft users.
Users already tried to report this issue on the Microsoft forums, but so far, there is no update on this, from Microsoft.

There are some other good solutions as Skype replacement, like: Slack, facebook, email.

How to be reliable as a freelancer – common rules


How to be reliable as a freelancer – common rules

admin on 05/03/2017 19:07:49 updated on 05/09/2017 06:52:39


as a freelance developer one of the assets that clients are interested in is reliability. Other Key aspects:
Come up with solutions
Delivering stellar work
Stick to the plan
Don’t go MIA

 

If you’re just starting out as a freelance developer, you will soon learn that one of the assets that clients are interested in is reliability. As a freelance developer, reliability is a trait you want to cultivate, in order to keep clients coming back for more. Here are some of the moves that will label you as a reliable freelance developer:

  • Delivering stellar work – This one should really go without saying, right? We’ll say it anyway. Delivering high quality work consistently is a mark of a reliable freelance developer. In order for this to be the case, you need to be careful to allot enough time for all the projects, don’t overwork yourself or the quality of your output will also be affected and that is something that you definitely do not want when working as a freelance developer.
  • Stick to the plan – If you want to be seen as a reliable freelance developer, you’ll want to stick to the plan you’ve conceived with your client. If you have any questions or uncertainties, make sure to clear them up with them (preferably in writing). Of course, this doesn’t mean that clients don’t appreciate some initiative from their freelance developer, so if you do think there are some changes that could be made to the benefit of the client, then call them up and discuss it. They’ll be happy to see you’re invested in this.
  • Don’t go MIA – Freelancing as a developer can mean you get pretty caught up in whatever project you’re working on. But when we’re talking about bigger projects over a longer time period especially, make certain to establish some routine form of communication with your client, to keep them updated. This is another element that clients deem to be the mark of a reliable freelance developer.
  • Come up with solutions – We’ve all run into obstacles or challenges when working as a freelance developer. However, what signals you out as being a reliable freelance developer in these situations is not only identifying the issues, but proposing solutions as well. Even if the client won’t accept your resolution, a reliable freelance developer gets involved when things go bad.

As you can tell, a lot of what makes a freelance developer reliable is being proactive, getting involved and keeping to deadlines. So, if you want your clients to see you as a reliable freelance developer and request your services in the future, keep it in mind.

I’ve used Mac’s OS X, Windows and Linux over the 15 years. Here are my thoughts.

Let’s get one thing straight.  I have 1PC, 1 mbp, and 1 laptop. I run Windows, iOS and linux on each computer.
Specs ? not going to really bother you with this. I6 CPU (this is a bit of a joke, it’s an amd 6350 with 6 cores that runs at 3.9 ghz), a mbp 2015 (i5) and a i7 laptop. All of them got SSD’s and 8GB ram. So, the performance is not quite an issue.

What I do? Development and blogging. Why do I need so much performance? Honestly, I don’t really. Everything runs quite smoothly. But I am a geek.

Why do I use all 3 big OS’s? Well, I’m a geek. That’s why. What’s the advantage for each os in development? Pretty much, there isn’t one. You get used to the graphical enviroment, then you just have to make sure that it keeps running smoothly.

Each system is very different. Each system is quite similar to each other. Let’s break it down.

I use Google Chrome (syncs all my browsing data, bookmarks and password. Great so far).
I use Skype (on linux, you have skype alpha, it’s quite cool).
I use Spotify (same on all 3 systems).
I use Sublime (same on all 3 systems)
I use terminal (quite the same on all 3 systems)
I use workbench ( – || – )
I use thunderbird (or earlybird, depends on my mood, but   – || –  )

This is pretty much everything I use. So, the apps are quite the same. Why do I use all 3 of them, and what’s the difference?

So. Linux. Mac. Windows. They’re all super duper friendly in 2017. You can’t just dislike one.

Let’s start with my favourite. iOS. I’ve been using this os for about 4 years now.

My first impression and thought was, “Why the heck they didn’t made a ‘cut’ option“. This is something that I was using. Later, I learned that there’s a shortcut for that as well. Just that it’s not CTRL + X. it’s Command+Option+V pastes the documents into the new desired location on the Mac, cutting it from the prior locating and moving it to the new location. Cool.
This OS, is quite simple, and the most pleasant fact is that it looks smooth. Edged. Beautified. Intuitive. Cool. Currently I use Sierra 10.12.5. It’s amazingly stable, and beautiful.

Linux. First time I used linux, was a distro called Mandrake linux. Later derived into Mandriva. It was one of the latest versions, somewhere around 2005. I didn’t had internet at that time. Therefore no codecs, no updates, nothing. Was quite useless for me. Later I discovered ubuntu, got a internet connection. I discovered workspaces. Then, there was love. This was the most useful feature that an OS could have for me, at that time. This is why I kept using it. Currently I use Ubuntu 17.04. It’s free, and blazing fast.

Windows. Well this was my first OS, I started using this OS since 3.1 version. They just launched windows 95 at that time. Or 98. My computer was not able to run windows 98 smoothly. It sucked. But you could get what you had to do, done. There were games. There were audio codecs and BSPlayer and Winamp. Cool times. Didn’t impressed me much at that time. But, since linux wasn’t really an option, and I didn’t had money for a mac… this was the best option (hackintosh was not really an option tho’ at that time). Currently I use Windows 10 (with licence), and it got a beautiful UI and a beautiful UX.

So. 15 years later. Developer. Why do I use all 3, now?

Well, believe it or not, I use windows OS X and Linux for entertainment(please, read movies here) and development. They all incredibly robust. They’re all stable. They’re all blazing fast. All of them are secure. All of them got my app requirements.

Right now. What’s the biggest difference, for me, between all 3 systems? Simple. Different UI(user interface). Different UX(User Experience).

Honestly, it does not really make any difference for me, on which system I am using. Most of the time, at work I use iOS’s Sierra 10.12.5 connected through ssh to my Ubuntu machine. Most of my work is on the ubuntu system through the Sierra’s terminal. Why I do this? Simple. All the development, is being deployed on the Ubuntu machine. Most of the things that the Ubuntu machine is doing, is compiling with babel (es2016).

Do you want to hear some more? Please share this article.

Originally published here: http://thisqa.com/blog/ive-used-macs-os-x-windows-and-linux-over-the-15-years-here-are-my-thoughts

grunt and protractor: for beginners

Small app using protractor and grunt, available for free on github with install instructions.

 

I created a demo github testing repository, wanted to go with protractor for angular website.

After putting the code together, I started looking for a huge angular website for writing test cases and getting to work. Surprise. With all this fuss, there really aren’t so much websites using angular. There are few, but not as much as their competition.

I decided to go with protractor’s API. It has a demo on pretty much most of the Angular’s development features, so we can use this website as testing point (if I’ll find any bugs, I’ll point it out)
For a first lesson, I’ve set a git repository, with protractor 5.1.1 with grunt and a JSON reporter.
In order to get started, feel free to get the repo, and install it.

#initialise git, and get project

$ git init
$ git pull https://github.com/1greenapplee/protractor-with-grunt

#install dependencies

$ npm install -g Protractor
$ npm install -g grunt
$ npm install

#run project

$ grunt e2e

Basically, this project does not do much yet, for the first lesson but it will do for future lessons.

Protractor docs can be found here.
Grunt docs can be found here.

 

Why I Grunt over gulp or webpack?

Grunt is great for simple built in tasks. (one way or another using any runner you can get the job done)
Grunt is easier to learn (it takes about 5 lines of code before is up and running.
Grunt has a bigger community (if you don’t believe me, go and check their github).

Why I choosed Protractor over nightwatch or vanilla selenium ?

Progractor is integrated with webdriver (it gives me Selenium)
protractor knows to wait until Angular finishes rendering DOM (basically the technologies are communicating with each other and Javascript tells protractor that it finished, it can continue with queue tasks)

How to manage your time better, as a freelancer

If you’re like most of the freelance developers out there, you probably chose this career path in part for the freedom it promised. Maybe you were being overworked and underpaid at your previous job and saw this as a way to solve both of those issues. What many people fail to realise, though, is that, while working as a freelance developer, it is incredibly easy to overwork yourself and waste valuable time. If you feel that your time management skills aren’t up to date, and working as a freelance developer has taken over your life completely, here are some of our tips that should allow you to regain control over:

Focus – Quite frankly put, most of the freelance developers we’ve talked to find it difficult, if not impossible, to actually multitask efficiently. The general result from multitasking seems to be doing a lot of things at the same time, yet not doing any of them at the right standard and thus having to re-do them and waste even more time and energy. So, if you’re looking to improve your time management skills as a freelance developer, consider simply prioritizing one task at a time.

Avoid distractions – It’s so easy to lose a big chunk of your day to well-known productivity killers such as Twitter, Facebook, and their siblings. If you find yourself guilty of randomly wasting half an hour mindlessly scrolling through your feed or checking emails that aren’t really work related anyway, then make it a rule to limit the amount of time you’re allowed to spend on these activities during your working hours. This will allow you to better manage your time as a freelance developer by increasing your productivity.

Take breaks the smart way – If you ever feel like today is a bay day for science and you’re finding it difficult to focus on the tasks at hand, don’t be afraid to take some breaks. But, if you’re working as a freelance developer and wish to maximise your time efficiency, do this the smart way. Try working in short, concentrated bursts of time. Set yourself a goal, say 35 minutes of non-stop working, without any distractions, then rewards yourself with a 5 or 10 minute break.

Remember that freelancing is just a job – What often leads to having no free time to spend with your friends and family is simply taking on too much work and being a bit too flexible with your schedule. When working as a freelance developer, you don’t always have to take on all the projects that would require you to work outside of your normal business hours. Learn to say ‘no’ once in a while and have a life outside of your job. It will keep you happier in the long run.

Having said all of this, we know that managing your time as a freelance developer can at times prove to be challenging. However, if you try and apply some of these ideas to your own freelancing career, you should find yourself being more efficient and more free to go see that play you’ve been dying to see with your friends for ages.

This story was originally published here: http://thisqa.com/blog/how-to-manage-your-time-better-as-a-freelancer

What is Protractor and relevant description

Protractor is known mostly for end 2 end testing, as an open source automation framework that was designed by Google for Angularjs applications.

Protractor is an end to end framework that tests your application just like a user would. You can build the tests around your tests cases. What happens if an user clicks a specific button? What is the next step? What happens if a user adds a negative value into a field? Is an error shown? Does it goes to the next step ? If you have the tests cases, or the business logic in a document, you can write tests around that. The recommended way when coding end to end tests, is to write tests around the functionality.

Protractor it was released in July 2013 as a prototype for Angular JS testing framework. Later it evolved in what we currently know as protractor.

Protractor is a wrapper build around Selenium with webdriverio.
It supports angular specific locators (for example repeaters id’s, ng-click, ng-if etc)
It supports PageObjects (Page object represents an Object Pattern Design) – helps on writing more clean and readable code.
It can use the same Framework integration for unit and end to end tests.
It supports fast development (you do not need to use sleep or wait, because it communicates with Angular directly)
It is based on Angular’s concepts, therefore it’s quite easy to test your own code.

Basically, it’s a framework build with JavaScript bindings(you will still use selenium at the base) that communicates with Angular’s framework and knows when Angular has finished rendering the DOM. With Angular, mostly you do not need to set a specific wait time in order to wait for an element to be rendered.
Protractor (just like angular) works with promises and expects.
A promise in Protractor works just like a queue control. Of like a control flow if you will.

Expects – is something that protractor needs to get.
For example:
Expect “title” to be “Protractor tests”. But first, you have to get the element where the title is stored, then read the title.

element(by.tagName('h2')).getText().then(function(txt){
expect(txt).toMatch('Protracto tests');
});

Antother cleaner option to write this, can be as follows:

var myElement = element(by.tagName('h2'));
myElement.getText().then(function(txt){expect(txt).toMatch('Protracto tests'))});

You can easily improve the development flow using runners and compilers. For example grunt. You can set grunt in order to run everytime you save the spec file.

For protractor you can use Jasmine or Mocha, Cucumber to write tests for BDD Behaviour Driven Development.
There is an integrations (not recommended) for headless testing with PhantomJS headless browser.
You can also use Karma for unit tests.

How can a newbie learn protractor? The best way to learn protractor is to do few tutorials. Then, dive a bit into JavaScript. You will need this, I promise you that. A very recommended way to learn JavaScript is through freecodecamp’s lessons.