windmill-labs / windmill

Open-source developer platform to turn scripts into workflows and UIs. Fastest workflow engine (5x vs Airflow). Open-source alternative to Airplane and Retool.
https://windmill.dev
Other
9.56k stars 436 forks source link

bug: No scrolling in deploy to staging/prod screen #3687

Open suppengrn opened 4 months ago

suppengrn commented 4 months ago

Describe the bug

When accessing the staging/prod screen via the link scrolling is not possible.

To reproduce

  1. Go to the staging screen image
  2. Click on the "link" image
  3. The following screen scrolling is not possible therefore the "Deploy All" button is not accessible

Expected behavior

When the diff list is too long scrolling should be possible

Screenshots

No response

Browser information

No response

Application version

No response

Additional Context

reloading the site solves the problem

fatonramadani commented 4 months ago

Hi, what browser are you using ? I wasn't able to reproduce, the deploy detail page scroll seems to work correctly

suppengrn commented 3 months ago

Yes, I'm using Chrome (Version 123.0.6312.122)

wasnertobias commented 3 months ago

Was able to reproduce with Chrome Version 124.0.6367.208

and EE v1.333.5

Make sure to follow step 2!

wasnertobias commented 3 months ago

Workaround: After opening and closing the Account settings overlay it works again!

wasnertobias commented 3 months ago

Also no scrolling in the runs view now (initial run after first opening Windmill) EE v1.342.0-10-g387ea4469 Chrome Version 125.0.6422.142

wasnertobias commented 2 months ago

@rubenfiszel To reproduce the no scroll in runs view:

  1. F5 on home Windill
  2. Click "Import Flow"
  3. Copy-paste any YAML, e.g. see below
  4. Rename the flow to anything, e.g., "ABC"
  5. Click deploy
  6. now let it run with any input e.g., 2

=> You now cannot scroll down!

(If you F5 the page you can!)

summary: ""
description: ""
value:
  modules:
    - id: ap
      value:
        type: branchall
        branches:
          - expr: ""
            modules:
              - id: at
                value:
                  lock: ""
                  type: rawscript
                  content: |-
                    # import wmill

                    def main(x: str):
                        return x
                  language: python3
                  input_transforms:
                    x:
                      type: static
                      value: ""
                summary: Do stuff
            parallel: true
            skip_failure: false
          - expr: ""
            modules:
              - id: as
                value:
                  lock: ""
                  type: rawscript
                  content: |-
                    # import wmill

                    def main(x: str):
                        return x
                  language: python3
                  input_transforms:
                    x:
                      type: static
                      value: ""
                summary: Do stuff
            summary: ""
            parallel: true
            skip_failure: false
        parallel: true
      summary: ""
    - id: au
      value:
        lock: ""
        type: rawscript
        content: |-
          # import wmill

          def main(x: int):
              return x * 2
        language: python3
        input_transforms:
          x:
            expr: flow_input.x
            type: javascript
      summary: Do stuff
    - id: an
      value:
        type: branchall
        branches:
          - expr: ""
            modules:
              - id: ax
                value:
                  lock: ""
                  type: rawscript
                  content: |-
                    # import wmill

                    def main(x: int):
                        raise PermissionError("blabla3")
                  language: python3
                  input_transforms:
                    x:
                      expr: flow_input.x
                      type: javascript
            parallel: true
            skip_failure: false
          - expr: ""
            modules:
              - id: aw
                value:
                  lock: ""
                  type: rawscript
                  content: |-
                    # import wmill

                    def main():
                        raise PermissionError("blabla")
                  language: python3
                  input_transforms: {}
            summary: ""
            parallel: true
            skip_failure: false
          - expr: ""
            modules:
              - id: am
                value:
                  type: branchone
                  default: []
                  branches:
                    - expr: flow_input.x == 1
                      modules:
                        - id: aa
                          value:
                            tag: ""
                            lock: ""
                            type: rawscript
                            content: |-
                              def main():
                                  raise AssertionError("blabla")
                            language: python3
                            input_transforms: {}
                          summary: ....
                      summary: == 1
                      parallel: true
                      skip_failure: true
                summary: ""
            summary: ""
            parallel: true
            skip_failure: true
        parallel: true
      summary: ""
    - id: ao
      value:
        tag: ""
        lock: ""
        type: rawscript
        content: |-
          def main():
              pass
        language: python3
        input_transforms: {}
      summary: EARLY EMPTY RETURN
    - id: av
      value:
        tag: ""
        lock: ""
        type: rawscript
        content: |-
          import logging

          def main(x: int):
              logging.error("Why is this run?" + str(x*3))
              return x*3
        language: python3
        input_transforms:
          x:
            expr: results.au
            type: javascript
      summary: This should never run because an exception happened before
  early_return: ao
  failure_module:
    id: failure
    value:
      tag: null
      type: rawscript
      content: |-
        import os

        def main(message: str, name: str):
            flow_id = os.environ.get("WM_FLOW_JOB_ID")
            error_message_whitelist = [
                "ValidationError",
                "PermissionError",
                "AssertionError"
            ]

            if name in error_message_whitelist:
                return {
                    'windmill_status_code': 400,
                    'result': {
                        'error': {
                            'name': name,
                            'message': message,
                            'flow_id': flow_id
                        }
                    }
                }
            else:
                return {
                    'windmill_status_code': 400,
                    'result': {
                        'error': {
                            'name': name,
                            'flow_id': flow_id
                        }
                    }
                }
      language: python3
      input_transforms:
        name:
          expr: error.name
          type: javascript
        message:
          expr: error.message
          type: javascript
  concurrency_time_window_s: 0
schema:
  type: object
  additionalProperties: false
  order:
    - x
  properties:
    x:
      type: number
      description: ""
      format: ""
  required: []