Catching CSS Regressions and Visual Bugs in Continuous Integration
Many web projects nowadays are equipped to simulate real users and automatically test a real use case, but these end-to-end tests still have a weakness. Browser automation tools run tests by performing the interactions and assertions in the context of the DOM of the pages. That is very different from how humans use web applications, which is by looking at the user interface. Due to this, the tests’ definition of a “functional web app” differs from that of a real human.
For example, let’s take a simple music player with two buttons:
- One in green with a play icon, and
- One in red with a stop icon.
The HTML would look something like this:
<!-- music player -->
<button class="button is-red"><i class="icon icon-stop"/></button>
<button class="button is-green"><i class="icon icon-play"/></button>
In our end-to-end tests, one would typically instruct the test to check:
- If the expected classnames exist.
- If clicking the stop button stops the music.
- If clicking the play button plays the music.
If all of the above conditions were met, then the app is considered “functional”. However, the …
automation user-interface testing css
Job opening: Liquid Galaxy support engineer
This position has been filled. See our active job listings here.
We are looking for a full-time, experienced or entry-level engineer to join the End Point Immersive and Geospatial Support (I+G) Team—a small, multidisciplinary team that supports our company’s clients with their Liquid Galaxy systems.
The candidate will be based out of our Johnson City, Tennessee or New York City offices depending on where the candidate is located. With sufficient hardware and deployment experience, the engineer may eventually be asked to travel to, perform, and supervise system installations.
Occasional evenings and weekend on-call shifts are shared amongst the team.
This is a great entry-level opportunity to learn about all aspects of production computer systems and their deployment. More experienced individuals will have the opportunity to work directly in feature development on production systems and possibly assist with other ongoing consulting projects the I+G team takes on.
Overview
- Job Level: Experienced or entry-level, full-time.
- Location: On-site expected with occasional remote work, on-call weekdays and weekends.
- Environment/Culture: Casual, remote management, lots of video meetings.
- Benefits: paid vacation and holidays, 401(k), health insurance. …
jobs-closed visionport
Lazy Isn’t Bad: Write Lazy Scripts
A quote attributed to Bill Gates says, “I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.” Larry Wall’s list of the virtues of a programmer begins with “laziness,” which of course is a particular kind of laziness: the desire to automate things that a human has previously done manually and painstakingly.
It’s a philosophy that is generally good to adopt. Are you doing repetitive tasks that you hate every day? Weekly? At the end of every month? That’s probably a clue that you could take some pain out of your workday. If there’s some task that comes up repeatedly that requires you to fiddle with data which can be automated, even if it’s relatively easy to do manually, why not do it?
There are many ways in which people try to improve productivity. One of the more famous, Kanban, involves removing work in progress and optimizing flow. While implementing full Kanban is probably more than you want to do, we can do it the lazy way.
The lazy way means you put time and effort into your infrastructure, creating code or scripts that will do the job for you. Many people don’t think they have the time to put some hours into making …
automation tips
Fetching Outputs From Java Process Monitoring Tool with Icinga/Nagios
Photo by Mihai Lupascu on Unsplash
Recently, I encountered an issue when executing NRPE, a Nagios agent which runs on servers that are being monitored from Icinga’s head server. Usually NRPE-related calls should run without issues on the target server, since it is declared in the sudoers file (commonly /etc/sudoers
). In this post, I will cover an issue I encountered getting the output from jps (Java Virtual Machine Process Status Tool), which needed to be executed with root privileges.
Method
I wanted to use Icinga to get a Java process’s state (in this case, the process is named “Lucene”) from Icinga’s head server, remotely. jps
works for this, functioning similarly to the ps
command on Unix-like systems.
Usually, NRPE should be able to execute the remote process (on the target server) from Icinga’s head. In this case we are going to create a workaround through the following steps:
- Dump the Java process ID into a text file.
- Dump the running threads into another text file.
- Put item 1 and item 2 above into a single bash script.
- Create a cronjob to automatically run the bash script.
- Create an NRPE plugin to evaluate the output of item 1 and item 2.
Test
To illustrate this, I ran …
linux monitoring nagios jetty
Engineering Is Not Just About the Cool Stacks
As a developer, I love finding new shiny pieces of tech that can help me develop web applications better. To me, it is one of the best parts of the job: Pick up a new programming language, a new database, a new standard, etc., and build cool things with it. But recently, I had the chance to reflect on my experience working on a boring stack at one of my previous workplaces, and it was actually a lot better than I expected.
My journey
I used to work at a company where the teams are free to decide the tech stacks that best fit their requirements, so a wide range of modern tools were used there to solve the problems at hand. Within just 2 years of joining the company, I switched teams four times and touched everything from Java, Scala, Akka, Terraform, AWS ECS, Serverless, API Gateway, AWS Lambda, AWS DynamoDB, React, Gatsby, Vue, Nuxt, TypeScript, Flowtype, and many other tools that really helped advance my technical skills.
But in late 2018, my manager invited me to assist a “less popular” team in the company. The team handled a myriad of complex products that are quite old. The team’s tech stack was not the shiniest compared to the other teams in the company; the …
culture training programming
Database Design: Using Composite Keys
Photo by Chuttersnap
Whether to use single-column or composite keys is another long-debated subject of database design. I previously wrote to support using natural keys and here I want to make good arguments for using composite keys.
Single-column vs. Composite
Single-column keys are widely used nowadays. I wouldn’t be surprised if many developers today don’t even think database design with composite keys is possible, even though they were essential in the beginning. Relational databases make no assumption that the keys must be composed of a single column.
Let’s see the composite keys with the corporate database example again. First, we’d need departments and employees:
CREATE TABLE departments (
department_id text NOT NULL,
department_location text NOT NULL,
PRIMARY KEY (department_id)
);
CREATE TABLE employees (
username text NOT NULL,
department_id text NOT NULL,
PRIMARY KEY (username),
FOREIGN KEY (department_id) REFERENCES departments
);
Then our database grows, and we need to split the departments into multiple teams. Here’s what they’ll look like:
| id | department | team | members |
| -- | ----------- | -------------- | ------- |
| 1 | sysadmin …
database development performance postgres sql
Choosing Between SaaS and a Custom Website
So you need a website, but you’re not sure whether you want to pay for a website provided as software as a service (SaaS), or build a custom website and host it.
The options are plentiful, as are the reasons for building a website in the first place. The purpose of this article is not to put forward specific packages or providers for consideration, rather I want to discuss how you might make that decision more objectively. Also, this discussion is for a commercial website, not a personal website or blog.
Here at End Point, we receive many inquiries asking for new websites. We are well equipped to help you work through this process, and are happy to do so. But for those of you who want to “go it alone”, or if you just want to be better prepared before giving us a call, read on for some things to consider as you make a pros & cons list for SaaS vs. custom websites.
While deciding between a SaaS offering and a custom build carries unlimited considerations, here are a few main points to help you narrow down the field.
Experience
The foremost factor that you should consider for your pros & cons list is your experience. This may come as a little bit …
saas software
End Point Relocates Its Tennessee Office
After having been located in Bluff City for close to eight years, End Point is pleased to announce that it has recently relocated its Tennessee office to Johnson City. The new location is an improved facility that better serves our Liquid Galaxy team. A group of veteran End Pointers including Matt Vollrath, Neil Elliot, and Josh Ausborne are working out of the new location, alongside more recent employees Josh Harless and myself.
Our Tennessee office has an important role in providing remote access to various Liquid Galaxy platforms so that other End Point engineers can work on them. Johnson City has recently begun a fiber internet initiative through its power company, BrightRidge. We were lucky enough to be in the first wave of installations and got cables run underground to our office so that we can enjoy speeds of up to 1000 Mbps (gigabit).
This office is where we test new content, features, updates, or entirely new designs. The interior design includes plenty of space to concentrate on individual work, as well as for test systems and preparing new units for shipment. It is also well-suited for collaborative work with both onsite and remote teammates on R&D, content …
company visionport