### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
OPERATOR = GCSObjectsWithPrefixExistenceSensor(
        task_id="gcs-obj-prefix",
        bucket=TEST_BUCKET,
        prefix=TEST_OBJECT,
        google_cloud_conn_id=TEST_GCP_CONN_ID,
        deferrable=True,
    )
    @mock.patch("airflow.providers.google.cloud.sensors.gcs.GCSHook")
    def test_gcs_object_with_prefix_existence_async_sensor(self, mock_hook):
        """
        Asserts that a task is deferred and a GCSPrefixBlobTrigger will be fired
        when the GCSObjectsWithPrefixExistenceAsyncSensor is executed.
        """
        mock_hook.return_value.list.return_value = False
        with pytest.raises(TaskDeferred) as exc:
            self.OPERATOR.execute(mock.MagicMock())
        assert isinstance(exc.value.trigger, GCSPrefixBlobTrigger), "Trigger is not a GCSPrefixBlobTrigger"
    @pytest.mark.parametrize(
        "soft_fail, expected_exception", ((False, AirflowException), (True, AirflowSkipException))
    )
    def test_gcs_object_with_prefix_existence_async_sensor_execute_failure(
        self, context, soft_fail, expected_exception
    ):
        """Tests that an AirflowException is raised in case of error event"""
        self.OPERATOR.soft_fail = soft_fail
        with pytest.raises(expected_exception):
            self.OPERATOR.execute_complete(
                context=context, event={"status": "error", "message": "test failure message"}
            )
    def test_gcs_object_with_prefix_existence_async_sensor_execute_complete(self, context):