resource "datadog_dashboard" "Cypress_jenkins" {
  layout_type  = "ordered"
  reflow_type  = "fixed"
  title        = "Cypress-jenkins"
  url          = "/dashboard/gnk-wb6-mte/cypress-jenkins"

  widget {
    group_definition {
      background_color = "vivid_blue"
      layout_type      = "ordered"
      show_title       = "true"
      title            = "Execution Times"

      widget {
        query_table_definition {
          custom_link {
            is_hidden      = "true"
            override_label = "containers"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "hosts"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "logs"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "profiles"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "traces"
          }

          has_search_bar = "always"

          request {
            formula {
              alias              = "Average Feature Time /min"
              cell_display_mode  = "bar"
              formula_expression = "(((query1 / query2) / 1000000000) / 60)"

              limit {
                count = "1000"
                order = "desc"
              }
            }

            formula {
              alias              = "cumulative feature runtime"
              formula_expression = "query1"
            }

            limit = "0"

            query {
              event_query {
                compute {
                  aggregation = "cardinality"
                  interval    = "0"
                  metric      = "@ci.pipeline.id"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@test.suite"
                  limit = "1000"

                  sort {
                    aggregation = "cardinality"
                    metric      = "@ci.pipeline.id"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query2"

                search {
                  query = "test_level:test"
                }
              }
            }

            query {
              event_query {
                compute {
                  aggregation = "sum"
                  interval    = "0"
                  metric      = "@duration"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@test.suite"
                  limit = "25"

                  sort {
                    aggregation = "sum"
                    metric      = "@duration"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"

                search {
                  query = "test_level:test"
                }
              }
            }
          }

          title       = "Average Execution Time By Feature"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "8"
          is_column_break = "false"
          width           = "7"
          x               = "5"
          y               = "0"
        }
      }

      widget {
        query_table_definition {
          custom_link {
            is_hidden      = "false"
            link           = "/logs?live=false\u0026from_ts={{timestamp_start}}\u0026to_ts={{timestamp_end}}\u0026query={{ci.pipeline.name.value}} source:cypress-parallel-handler"
            override_label = "logs"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "containers"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "hosts"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "profiles"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "traces"
          }

          has_search_bar = "auto"

          request {
            formula {
              alias             = "Execution Time"
              cell_display_mode = "bar"

              conditional_formats {
                comparator = ">"
                hide_value = "false"
                palette    = "white_on_red"
                value      = "800000000000"
              }

              formula_expression = "cutoff_min(query1, 60000000000)"

              limit {
                count = "500"
                order = "desc"
              }
            }

            limit = "0"

            query {
              metric_query {
                aggregator  = "avg"
                data_source = "metrics"
                name        = "query1"
                query       = "avg:cypress.parallelRuntime{test.status:pass} by {ci.pipeline.name}"
              }
            }
          }

          title       = "Average Execution Time by Pipeline"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "5"
          is_column_break = "false"
          width           = "5"
          x               = "0"
          y               = "3"
        }
      }

      widget {
        toplist_definition {
          custom_link {
            is_hidden      = "false"
            override_label = "rum"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "containers"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "hosts"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "logs"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "profiles"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "traces"
          }

          request {
            formula {
              formula_expression = "a"

              limit {
                count = "50"
                order = "desc"
              }
            }

            query {
              event_query {
                compute {
                  aggregation = "avg"
                  interval    = "0"
                  metric      = "@duration"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@test.name"
                  limit = "50"

                  sort {
                    aggregation = "avg"
                    metric      = "@duration"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "a"

                search {
                  query = "test_level:test @test.status:pass"
                }

                storage = "hot"
              }
            }
          }

          title       = "Execution Time by Test"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "5"
          x               = "0"
          y               = "0"
        }
      }
    }

    widget_layout {
      height          = "9"
      is_column_break = "false"
      width           = "12"
      x               = "0"
      y               = "0"
    }
  }

  widget {
    group_definition {
      background_color = "vivid_orange"
      layout_type      = "ordered"
      show_title       = "true"
      title            = "Failures"

      widget {
        query_table_definition {
          has_search_bar = "auto"

          request {
            formula {
              alias              = "Fails"
              cell_display_mode  = "bar"
              formula_expression = "query1"

              limit {
                count = "25"
                order = "desc"
              }
            }

            limit = "0"

            query {
              event_query {
                compute {
                  aggregation = "cardinality"
                  interval    = "0"
                  metric      = "@ci.pipeline.id"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@ci.pipeline.name"
                  limit = "25"

                  sort {
                    aggregation = "cardinality"
                    metric      = "@ci.pipeline.id"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"

                search {
                  query = "test_level:test @test.status:fail @test.rerun:true"
                }
              }
            }
          }

          title       = "Number of Pipeline Job Fails"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "5"
          is_column_break = "false"
          width           = "7"
          x               = "5"
          y               = "3"
        }
      }

      widget {
        query_table_definition {
          request {
            formula {
              alias              = "Times Failed"
              cell_display_mode  = "bar"
              formula_expression = "query1"

              limit {
                count = "100"
                order = "desc"
              }
            }

            limit = "0"

            query {
              event_query {
                compute {
                  aggregation = "count"
                  interval    = "0"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@test.name"
                  limit = "100"

                  sort {
                    aggregation = "count"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"

                search {
                  query = "test_level:test @test.status:fail"
                }
              }
            }
          }

          title       = "Failed tests"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "7"
          x               = "5"
          y               = "0"
        }
      }

      widget {
        sunburst_definition {
          hide_total = "false"

          request {
            formula {
              formula_expression = "query1"
            }

            query {
              event_query {
                compute {
                  aggregation = "count"
                  interval    = "0"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "error.type"
                  limit = "10"

                  sort {
                    aggregation = "count"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"

                search {
                  query = "test_level:test status:error"
                }
              }
            }
          }

          title       = "Errors"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "5"
          x               = "0"
          y               = "3"
        }
      }

      widget {
        toplist_definition {
          custom_link {
            is_hidden      = "true"
            override_label = "containers"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "hosts"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "logs"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "profiles"
          }

          custom_link {
            is_hidden      = "true"
            override_label = "traces"
          }

          request {
            formula {
              formula_expression = "a"

              limit {
                count = "10"
                order = "desc"
              }
            }

            query {
              event_query {
                compute {
                  aggregation = "count"
                  interval    = "0"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@ci.pipeline.name"
                  limit = "10"

                  sort {
                    aggregation = "count"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "a"

                search {
                  query = "test_level:test @test.status:fail @test.rerun:true"
                }

                storage = "hot"
              }
            }
          }

          title       = "Test Failures by Pipeline"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "5"
          x               = "0"
          y               = "0"
        }
      }

      widget {
        toplist_definition {
          live_span = "1mo"

          request {
            formula {
              formula_expression = "query1"

              limit {
                count = "25"
                order = "desc"
              }
            }

            query {
              event_query {
                compute {
                  aggregation = "cardinality"
                  interval    = "0"
                  metric      = "@test.is_flaky"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@test.name"
                  limit = "25"

                  sort {
                    aggregation = "cardinality"
                    metric      = "@test.is_flaky"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"

                search {
                  query = "test_level:test"
                }

                storage = "hot"
              }
            }
          }

          title       = "Flaky Tests"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "2"
          is_column_break = "false"
          width           = "5"
          x               = "0"
          y               = "6"
        }
      }
    }

    widget_layout {
      height          = "9"
      is_column_break = "false"
      width           = "12"
      x               = "0"
      y               = "9"
    }
  }

  widget {
    group_definition {
      background_color = "vivid_purple"
      layout_type      = "ordered"
      show_title       = "true"
      title            = "Other Test Statistics"

      widget {
        query_value_definition {
          autoscale = "true"
          precision = "2"

          request {
            formula {
              formula_expression = "query1"
            }

            query {
              event_query {
                compute {
                  aggregation = "count"
                  interval    = "0"
                }

                data_source = "ci_tests"
                indexes     = ["*"]
                name        = "query1"

                search {
                  query = "test_level:test"
                }
              }
            }
          }

          timeseries_background {
            type = "bars"
          }

          title       = "Total Tests Run"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "2"
          x               = "10"
          y               = "0"
        }
      }

      widget {
        sunburst_definition {
          hide_total = "false"

          request {
            formula {
              formula_expression = "query1"

              limit {
                count = "500"
                order = "desc"
              }
            }

            query {
              event_query {
                compute {
                  aggregation = "cardinality"
                  interval    = "0"
                  metric      = "@test.name"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@test.environment"
                  limit = "10"

                  sort {
                    aggregation = "cardinality"
                    metric      = "@test.name"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"

                search {
                  query = "test_level:test"
                }
              }
            }
          }

          title       = "Number of Tests Per Environment"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "3"
          x               = "0"
          y               = "0"
        }
      }

      widget {
        toplist_definition {
          live_span = "1mo"

          request {
            formula {
              formula_expression = "query1"

              limit {
                count = "25"
                order = "desc"
              }
            }

            query {
              event_query {
                compute {
                  aggregation = "cardinality"
                  interval    = "0"
                  metric      = "@test.name"
                }

                data_source = "ci_tests"

                group_by {
                  facet = "@ci.pipeline.name"
                  limit = "25"

                  sort {
                    aggregation = "cardinality"
                    metric      = "@test.name"
                    order       = "desc"
                  }
                }

                indexes = ["*"]
                name    = "query1"
              }
            }
          }

          title       = "Number of Tests per Pipeline"
          title_align = "left"
          title_size  = "16"
        }

        widget_layout {
          height          = "3"
          is_column_break = "false"
          width           = "7"
          x               = "3"
          y               = "0"
        }
      }
    }

    widget_layout {
      height          = "4"
      is_column_break = "false"
      width           = "12"
      x               = "0"
      y               = "18"
    }
  }
}
