Coder Social home page Coder Social logo

flank / flank-dashboard Goto Github PK

View Code? Open in Web Editor NEW
28.0 28.0 14.0 11.29 MB

Integrate with popular CI tools to collect software project metrics like performance, build stability, and codebase quality.

License: Apache License 2.0

Kotlin 0.01% Swift 0.01% Objective-C 0.01% Dart 97.37% HTML 0.04% Shell 0.05% JavaScript 2.42% Makefile 0.01% Groovy 0.10%

flank-dashboard's Introduction

flank-dashboard's People

Contributors

bootstraponline avatar dependabot[bot] avatar jdzsz avatar kowalczykp avatar madz avatar radekdymacz avatar solid-anatolyeva avatar solid-daniyilyevtyushkin avatar solid-dimakoniaiev avatar solid-maksymtielnyi avatar solid-maxim avatar solid-tetianamovlian avatar solid-vladlaba avatar solid-vovabeloded avatar solid-yuriiuvarov avatar vladlaba avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

flank-dashboard's Issues

Create circle progress widget

image

See https://github.com/gskinnerTeam/flutter_vignettes/tree/master/vignettes/spending_tracker#budgettracker-graphs for an open source example graph.

  • Range should be from 0 to 100%
  • implement widget
  • add tests
  • integrate with state management and dashboard page
  • documentation

Slack integration

When Flaky test is detected we want to be able to notify team about the problem, the quick way would be to send Slack message with URL.

  • Configure slack integration
  • Send a message to Slack

Import Jenkins data to Firestore

Develop a program that uses the Jenkins API to import all builds for a given job to Firebase. This should be idempotent. The program will run on a schedule and constantly update Firestore with the latest builds.

Name Description
buildId unique identifier of the build
buildDate date the build was started
buildQueued the amount of time the build spent waiting to execute
buildDuration the amount of time the build took to execute (does not include queue time)
buildSuccessful boolean for if the build was successful or not

Widget Theme support

A company should be able to change the theme so that colors in the app reflect the brand colors for that company.

Investigate golden screenshot testing

Firestore integration

We need to make sure that basic integration with Firestore from CLI works well:

  • Query data from firestore
  • Add data to the firestore

No auth needed for now.

JSON reporting for Flutter Driver test results

See if it's possible to save the internal flutter driver results to a JSON file. If successful, we'd be able to transform this format into JUnit XML in the future.

Currently there's no machine readable output for test results.

/// A subclass of [LiveTestWidgetsFlutterBinding] that reports tests results
/// on a channel to adapt them to native instrumentation test format.
class E2EWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding {
  /// Sets up a listener to report that the tests are finished when everything is
  /// torn down.
context['\$flutterDriverResult'] = json.encode(result);

e2e package


Flutter itself uses a JSON reporter and stores results in BigQuery.

https://github.com/flutter/flutter/blob/master/dev/bots/test.dart
https://github.com/flutter/flutter/blob/master/dev/bots/flutter_compact_formatter.dart

Prepare detailed specification on how flaky test detection will work

Review relevant information presented in shared word file.

Prepare a detailed plan on how Flaky test detection will work, what components will be used.

Current high-level understanding (can be changed after investigation):

  1. Parse JUnit XML
  2. For each test - get the previous test run results from Firebase
  3. Analyze history & detect Flaky test (specify how the algorithm will work)
  4. Display results/Save to Firebase

flutter_web_driver.dart improvements

Currently flutter_web_driver.dart doesn't stream the results to stdout and the path to the log files are not printed.

Tasks

  • Print results in real time to stdout
  • Print log file location to stdout after saving the files

Import Circle CI data to Firestore

Develop a program that uses the Circle CI API to import all builds for a given job to Firebase. This should be idempotent. The program will run on a schedule and constantly update Firestore with the latest builds.

Name Description
buildId unique identifier of the build
buildDate date the build was started
buildQueued the amount of time the build spent waiting to execute
buildDuration the amount of time the build took to execute (does not include queue time)
buildSuccessful boolean for if the build was successful or not

Port Buildkite Shellwords parser from Go to Dart

The task is to create a standalone Dart port of the shellwords library from Buildkite. Shellwords is useful for parsing strings in the same way as the UNIX Bourne shell.

A golang library for splitting command-line strings into words like a Posix or Windows shell would.

https://github.com/buildkite/shellwords

Tasks

Import Bitrise data to Firestore

Develop a program that uses the Bitrise API to import all builds for a given job to Firebase. This should be idempotent. The program will run on a schedule and constantly update Firestore with the latest builds.

Name Description
buildId unique identifier of the build
buildDate date the build was started
buildQueued the amount of time the build spent waiting to execute
buildDuration the amount of time the build took to execute (does not include queue time)
buildSuccessful boolean for if the build was successful or not

Setup Jenkins testing environment

Research how to setup a public Jenkins and Buildkite service that can be used to validate the integration logic. The build import scripts will point to these test services and ensure the data is imported to Firebase successfully.

Adopt lint package for linting

Google publicly shares their internal rules as package:pedantic in open-source. It represents what Google is enforcing internally throughout all Dart code. For a lint rule to be added to pedantic, Google has to change all code which doesn't follow the style.

This strict practice results in only 27/150+ rules to be enabled. While some are contradictory to each other and can not enabled together, a big chunk of rules isn't enabled because it requires too much work to update all of Googles existing code.

For developers outside Google, it is the norm to have separate lint rules per project. One project might enable more rules then others.

lint enables a majority of lint rules, leaving out contradictory and very opinionated rules.

https://pub.dev/packages/lint

https://resocoder.com/2020/01/17/dart-linting-tutorial-healthy-flutter-codebase-with-analysis_options-yaml/

  • make sure that lint warnings fail build on bitrise
  • as we use monrepo check if we can use same lint for all projects

Doc for guardian

Commit research doc with info from:

  • LinkedIn
  • Shopify
  • Sony
  • Netflix

Import Buildkite data to Firestore via GraphQL API

Develop a program that uses the Buildkite GraphQL API to import all builds for a given job to Firebase. This should be idempotent. The program will run on a schedule and constantly update Firestore with the latest builds from Buildkite.

Name Description
buildId unique identifier of the build
buildDate date the build was started
buildQueued the amount of time the build spent waiting to execute
buildDuration the amount of time the build took to execute (does not include queue time)
buildSuccessful boolean for if the build was successful or not

https://gist.github.com/bootstraponline/f2f76d746233a3281e2d86e93d7508e1


Create build results widget

  • Design widget that reads in data from the model and renders according to the spec
  • Write a component spec to verify the widget works as expected
  • Write a FlutterDriver test to verify the widget works in a real browser
  • Note that the individual bars in the graph should be clickable. Once clicked, they will open a link to the build on Jenkins/Buildkite/etc.

FAQ

  1. How many bars should we render?
    Let's start with 14 based on the design, but make it configurable.

  2. Is the graph interactive?
    Yes, the user should be able to click onto an individual bar and that will open a new URL. See https://buildkite.com/bazel

  3. Should we use real data?
    For now, mock out all the data.

Graph should resize based on screen size. See Google example:
https://google.github.io/charts/flutter/example/bar_charts/spark_bar

Import JUnit XML data to Firebase

After JUnit XML parsing we want to store test data in Firebase so this data can be used for Flaky Test detection algorithm.

  • Firestore structure
  • Data model
  • Integration with Firestore
  • Save data

Note: for now we'll skip Auth as it can be handled later on once all pieces work together well.

Setup Buildkite testing environment

Research how to setup a public Buildkite service that can be used to validate the integration logic. The build import scripts will point to these test services and ensure the data is imported to Firebase successfully.

Update tickets & design doc

Development workflow:

  • Author initial set of epics, tickets, with estimates and assigned milestone
  • Author initial design and design doc
  • Review existing tickets and add new tickets for missing work
  • Update design doc with any missing information

Jira Integration

To act on detected Flaky test we want to be able to integrate with Jira so the new ticket can be created (or existing updated).

For current Jira integration implementation, we assume that Simple workflow is used. Ticket type = "Task".

Jira integration should allow:

  • Jira integration configuration (Project, Ticket template)
  • Open ticket
  • Close ticket
  • Find ticket by test key
  • ?Reopen ticket

Review 3rd party API testing techniques

As we integrate with 3rd party services like Jira & Slack we want to make sure that our integration is reliable.

As a result of this ticket completion, we want to have documented 3rd party API testing approach we plan to use for Jira & Slack integration testing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.