FANDOM


  • Nikodamn

    End-to-end tests are useful tool for checking if current state of an application meets business requirements. In Fandom we put a lot of emphasis on such tests and ensuring that those needs are met along with application changes to make sure that we deliver the best possible experience for our users.

    In this article series I’d like to present how to create functional tests in WebdriverIO, integrate them with Jenkins, containerize, scale and setup a good-looking test reports dashboard with Allure and implement a Continuous Deployment solution. But let’s start from the beginning.


    WebdriverIO (or just wdio) is an Open Source test framework for Node.js. Currently it’s one of the most popular testing frameworks in the JS automation world next to S…


    Read more >
  • Bielik20

    Jenkins RxJs

    August 20, 2019 by Bielik20

    This article is part of the Jenkins CLI series in which we describe how we built CLI application for executing a series of parallel Jenkins Jobs in a terminal

    Jenkins RxJs is a small wrapper library on top of the Jenkins npm package that can be used in CLI, node, or browser environment. It encapsulates the whole process of starting a job and tracking it in a quiet, queue and build states. The consumer of the library simply executes run command with job options and receives a stream of JobResponse objects.


    This diagram describes the entire process:

    And JobReponse can be expressed in the following interfaces:

    type JobStatus = 'FAILURE' | 'SUCCESS' | 'PROGRESS';
    type JobResponse = JobProgress | JobDone;
    interface JobResponseBase { name: string; …



    Read more >
  • Mech.wikia

    In the first few months of 2019, we switched all our communities to HTTPS and migrated them to new domains. That switch is the end of a year-long project during which we touched several pieces of our infrastructure. This blog post summarizes the project, from planning through execution up to the results of the switch.


    The decision to switch to HTTPS was a no brainer for us. We've been serving our login pages over HTTPS for quite a long time, but the wikis themselves were still using the unencrypted HTTP protocol. With the whole Web moving towards encrypted connections, browsers showing warnings on HTTP pages, HTTP/2 available only on HTTPS and possibly some search ranking drawbacks of not having HTTPS by default, we decided it was time to s…


    Read more >
  • Brudne plaze

    As in most companies, at the end of the year everything seems to slow down. December is the month of closing budgets, focusing on platform stability and starting of holidays season that results with a pause in release cycles. Last year, we took this time and allowed ourselves to do a small experiment, a fun engineering project, which we affectionately called PIGS and I would like to share with you its results.


    A few years ago, one of the product teams released Portable Infoboxes. PI’s are the tables that usually contain rich metadata related to the article topic, they have key — value table structure, are usually placed in the top right corner of article and are built using wikitext templates. If you’d take a closer look you would notice th…


    Read more >
  • JCel

    AWS Athena Alerter

    February 6, 2019 by JCel

    Athena is a convenient big data query engine offered by AWS. It quickly got adopted in our company by multiple departments, however, its serverless nature has also created the risk of our Athena bill getting out of hand.

    Our data set contains terabytes of data and it’s easy to write a very expensive query. The users can avoid such a scenario by using partitions which allow them to limit the amount of accessed data to only the time period of interest. However, when working on a report in an external tool or implementing some complex queries, it’s easy to make a mistake or forget about partitioning. Also, external tools often do not show the amount of data scanned, so it’s not so easy to keep a track of it.

    We decided to create a tool which wi…


    Read more >
  • Wiki-o-slay

    At FANDOM we believe our applications should be resilient, that is they should be able to recover from failures and while the failure occurs still be useful for the users. Health checks are one of the ways to make applications self-healing.

    The idea is that the health checks detect when an instance of the application reaches an invalid state. A supervisor monitors those health checks and attempts to fix any issues. Depending on your platform the action might be different.

    Many frameworks (like Dropwizard and Spring) and platforms (like Kubernetes and Marathon) encourage you to implement health checks for your web applications.

    When a health check fails, AWS will stop sending requests to that instance. That’s pretty straightforward — we suspec…

    Read more >
  • Jrogan92

    GDPR

    July 23, 2018 by Jrogan92


    As the GDPR deadline has come and past, our team has reflected on its efforts of building the front-end library. The task was to build a front-end modal which FANDOM would integrate across its web products. For obvious reasons (a $20 million fine), we set a strict zero tolerance level for any failures. Our goal from the outset was to create the most well tested piece of code at FANDOM.

    The first problem we had to tackle was being able to reliably detect where in the world the user currently viewing a given page is visiting from. Our network provider Fastly provides a Geo Detection service through its Varnish servers. This exposes a wealth of information, but most importantly, an ISO 3166-2 country code associated with the client IP address.…


    Read more >
Community content is available under CC-BY-SA unless otherwise noted.